Xanthe Incident Agent
FreeNot checkedEnables Claude to drive a gated incident-response runbook that enforces step order and logs all actions via an XState machine.
About
Enables Claude to drive a gated incident-response runbook that enforces step order and logs all actions via an XState machine.
README
An incident-response agent that drives a runbook on rails. The procedure is a plain XState machine mounted as an MCP server by Xanthe, and the agent can only take the moves the machine allows. The division of labor:
- the machine owns the procedure (you cannot mitigate before diagnosing, resolve before recovery is verified, or close before a postmortem is written),
- the agent supplies judgment (the hypothesis, the root cause, the mitigation),
- the ledger is the audit trail (every step and every refused step, hash-chained).

A premature resolve is refused by the server, not trusted to the model's judgment, and the
refusal is recorded. By the time the incident is closed, the machine's context is a complete
postmortem, assembled as a side effect of being forced through the right order.
Run it
npm install
Offline (deterministic policy, no API key)
npm start
A scripted policy walks the same gated runbook to resolution and verifies the ledger.
With Claude
npm run agent # or: MODEL=claude-opus-4-8 npm run agent
Uses the Claude Agent SDK, which
authenticates with your existing Claude Code login (no API key). The Xanthe server is
registered as an MCP server, so Claude only ever acts through the gated step / state
tools: it reads state, narrates each move, recovers from refusals, and writes the postmortem.
It is held to the runbook the whole way.
What you see
gate check: resolve before mitigating -> refused (legal here: triage)
driving the runbook:
detected triage -> triaged
triaged page_oncall -> engaged
engaged form_hypothesis -> investigating
...
resolved write_postmortem -> closed
final state: "closed" (terminal: true)
postmortem assembled by being forced through the runbook: { ...severity, rootCause, ... }
ledger: intact (10 entries, including the refused gate check)
The runbook
machine/incident-runbook.ts is plain XState. Edit it, or point the agent at your own
runbook. Xanthe validates it at mount and rejects machines that auto-advance, so it stays a
step-gated procedure the agent drives one decision at a time.
License
Apache-2.0.
Installing Xanthe Incident Agent
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/msradam/xanthe-incident-agentFAQ
Is Xanthe Incident Agent MCP free?
Yes, Xanthe Incident Agent MCP is free — one-click install via Unyly at no cost.
Does Xanthe Incident Agent need an API key?
No, Xanthe Incident Agent runs without API keys or environment variables.
Is Xanthe Incident Agent hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Xanthe Incident Agent in Claude Desktop, Claude Code or Cursor?
Open Xanthe Incident Agent on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Notion
Read and write pages in your workspace
by NotionLinear
Issues, cycles, triage — from Claude
by LinearGoogle Drive
Search and read your Drive files
by Googlemindsdb/mindsdb
Connect and unify data across various platforms and databases with [MindsDB as a single MCP server](https://docs.mindsdb.com/mcp/overview).
by mindsdbCompare Xanthe Incident Agent with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All productivity MCPs
