Public post-incident reports as structured cases: search by symptom, read one, list by cause.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use when you have a case id (from search_incidents, list_incidents or get_topic) and need the whole write-up: symptoms, trigger, root cause, components, contributing factors, summary, impact, timeline, detection, remediation, action items, lessons, sources with archived copies, and the related cases.
Case id such as IL-0007
ko returns the Korean text of each field where the reviewers wrote one
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http incidentlib https://incidentlib-mcp.benchlet.com/mcp
Use when you have a case id (from search_incidents, list_incidents or get_topic) and need the whole write-up: symptoms, trigger, root cause, components, contributing factors, summary, impact, timeline, detection, remediation, action items, lessons, sources with archived copies, and the related cases.
| Argument | Type | Description |
|---|---|---|
| id* | string | Case id such as IL-0007 |
| lang | string | ko returns the Korean text of each field where the reviewers wrote one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^IL-\\d+$",
"description": "Case id such as IL-0007"
},
"lang": {
"enum": [
"en",
"ko"
],
"type": "string",
"default": "en",
"description": "ko returns the Korean text of each field where the reviewers wrote one"
}
}
}Use to understand one category: its cases, and the other categories those cases carry with counts and case ids (for a symptom, the root causes behind it; for a root cause, the components and factors seen with it). With `symptoms`, the page is restricted to the cases that sentence finds, best match first, so 'certificate expiry, but only where DNS was involved' is one call. Kinds: root_causes, components, symptoms, factors, orgs (the organisations that published cases).
| Argument | Type | Description |
|---|---|---|
| kind* | string | |
| slug* | string | The value's slug, e.g. capacity, coredns, pod-pending, no-alerting, github |
| symptoms | string | A symptom sentence that restricts the page to the cases it finds |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"slug"
],
"properties": {
"kind": {
"enum": [
"root_causes",
"components",
"symptoms",
"factors",
"orgs"
],
"type": "string"
},
"slug": {
"type": "string",
"description": "The value's slug, e.g. capacity, coredns, pod-pending, no-alerting, github"
},
"symptoms": {
"type": "string",
"description": "A symptom sentence that restricts the page to the cases it finds"
}
}
}Use when the question is about a category rather than a symptom: cases with a given root cause, component, symptom, contributing factor, domain or organisation, newest first, one page at a time. Filters are slugs (kebab-case) and combine with AND; find a slug with vocab when you only have words. An unknown slug matches nothing. When the answer carries next_cursor, call again with cursor to get the following page.
| Argument | Type | Description |
|---|---|---|
| org | string | the organisation's slug, e.g. github |
| lang | string | ko returns the Korean text of each field where the reviewers wrote one |
| limit | integer | Cases per page |
| cursor | string | next_cursor from the previous page |
| domain | string | kubernetes or ai-infra |
| factor | string | contributing factor, e.g. no-alerting |
| symptom | string | e.g. pod-pending |
| component | string | e.g. coredns, vpc-cni |
| root_cause | string | e.g. capacity, config-change |
Use first, whenever someone describes a failure they are seeing. Pass the symptoms as a sentence or a few words, in English or Korean; returns every reviewed public post-incident report the search finds for it, best match first: `total` is how many, `results` is one page of them in full (each with the case id, the page url and the source link), `matched` is every one as a row, and `next_cursor` fetches the next page. `interpreted` lists the values the sentence named, organisations included (the search moves cases carrying them up); `facets` count the results by root cause, component, symptom, contributing factor and organisation with the case ids, which answers 'what usually caused this' from the same call. The optional slug filters keep only cases carrying those values (AND); take slugs from facets, interpreted or vocab. Follow with get_incident for the full case.
| Argument | Type | Description |
|---|---|---|
| org | string | Keep only cases of this organisation, by slug, e.g. github (from facets.orgs, interpreted or vocab) |
| lang | string | ko returns the Korean text of each field where the reviewers wrote one |
| limit | integer | Cases per page |
| cursor | string | next_cursor from the previous page |
| domain | string | Keep only cases in this domain, e.g. kubernetes or ai-infra |
| factor | string | Keep only cases with this contributing factor slug, e.g. no-alerting |
| symptom |
Use to find the slug for a filter. With `query`, returns the vocabulary values nearest in meaning to the words, nearest first (e.g. 'cert ran out' finds certificate-expiry), optionally within one kind. Without `query`, returns every slug with its English and Korean name, per kind.
| Argument | Type | Description |
|---|---|---|
| kind | string | Only this kind |
| limit | integer | |
| query | string | A few words naming what you are looking for |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"kind": {
"enum": [
"root_causes",
"components",
"symptoms",
"factors",
"orgs"
],
"type": "string",
"description": "Only this kind"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"description": "A few words naming what you are looking for"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 10, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"org": {
"type": "string",
"description": "the organisation's slug, e.g. github"
},
"lang": {
"enum": [
"en",
"ko"
],
"type": "string",
"default": "en",
"description": "ko returns the Korean text of each field where the reviewers wrote one"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Cases per page"
},
"cursor": {
"type": "string",
"description": "next_cursor from the previous page"
},
"domain": {
"type": "string",
"description": "kubernetes or ai-infra"
},
"factor": {
"type": "string",
"description": "contributing factor, e.g. no-alerting"
},
"symptom": {
"type": "string",
"description": "e.g. pod-pending"
},
"component": {
"type": "string",
"description": "e.g. coredns, vpc-cni"
},
"root_cause": {
"type": "string",
"description": "e.g. capacity, config-change"
}
}
}| string |
| Keep only cases with this symptom slug, e.g. pod-pending |
| symptoms | string | What is observed, as a sentence or a few words, e.g. 'pods cannot get an IP, nodes show no available addresses' or 'coredns oom'. Leave it out to list every case under the slug filters, newest first; then at least one filter is required |
| component | string | Keep only cases with this component slug, e.g. coredns |
| root_cause | string | Keep only cases with this root cause slug, e.g. capacity |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"org": {
"type": "string",
"description": "Keep only cases of this organisation, by slug, e.g. github (from facets.orgs, interpreted or vocab)"
},
"lang": {
"enum": [
"en",
"ko"
],
"type": "string",
"default": "en",
"description": "ko returns the Korean text of each field where the reviewers wrote one"
},
"limit": {
"type": "integer",
"default": 5,
"maximum": 20,
"minimum": 1,
"description": "Cases per page"
},
"cursor": {
"type": "string",
"description": "next_cursor from the previous page"
},
"domain": {
"type": "string",
"description": "Keep only cases in this domain, e.g. kubernetes or ai-infra"
},
"factor": {
"type": "string",
"description": "Keep only cases with this contributing factor slug, e.g. no-alerting"
},
"symptom": {
"type": "string",
"description": "Keep only cases with this symptom slug, e.g. pod-pending"
},
"symptoms": {
"type": "string",
"minLength": 3,
"description": "What is observed, as a sentence or a few words, e.g. 'pods cannot get an IP, nodes show no available addresses' or 'coredns oom'. Leave it out to list every case under the slug filters, newest first; then at least one filter is required"
},
"component": {
"type": "string",
"description": "Keep only cases with this component slug, e.g. coredns"
},
"root_cause": {
"type": "string",
"description": "Keep only cases with this root cause slug, e.g. capacity"
}
}
}