claude-replay
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@claude-replaysearch for sessions about database migration"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Claude Replay
The observability layer for Claude Code sessions — search, analytics, and visualization across every project.
Claude Code's --resume/--continue and /rewind recover the session you're in. Claude Replay does the part they don't: it hooks passively into every session, records what happened to a local SQLite store, and makes every past session — across every project — searchable, comparable, measurable, and exportable. Full-text search, per-session insight metrics, death-cause classification (why a session ended), session diffing, a web dashboard, and a terminal UI — none of which Claude Code has natively.
Claude Code session
|
hooks (PreToolUse · PostToolUse · Stop)
|
v
~/.claude-replay/sessions.db ← events + checkpoints
|
+----+--------------------+
| | |
MCP tools Dashboard TUI
(resume) :8766 (browse)Passive hooks write. MCP tools, the web dashboard, and the terminal UI read. Nothing leaves your machine.
How this complements native Claude Code
Claude Replay is additive — it layers on top of the built-ins, it doesn't replace them.
You want to… | Use |
Resume / continue the current session | Native |
Undo file + conversation changes in a session | Native |
Search every past session by content, tool, or outcome | Replay |
See why a session ended + per-session metrics | Replay |
Compare two runs side by side | Replay |
Visualize a session timeline / browse all projects | Replay dashboard + TUI |
Export a session as HTML / JSON / Markdown | Replay |
Think of native resume/rewind as recovery, and Replay as observability over your whole history.
Related MCP server: claude-code-mcp
Architecture
Passive hooks write to SQLite. MCP tools read from SQLite. Dashboard + TUI visualize SQLite. That's the whole system.
Layer | File | Role |
Store |
| All DB access — sessions, events, checkpoints |
Hooks |
| Record tool calls + auto-checkpoint, dispatched by |
Recovery |
| Generate a resume brief from a session |
Export |
| Render a session as a self-contained HTML trace |
Server |
| Starlette app — MCP SSE + JSON API + static dashboard |
TUI |
| Textual session browser over the JSON API |
CLI |
| Every subcommand |
Port 8766 deliberately one above Claude Bridge's 8765, so the two siblings can run side by side without colliding.
Quickstart
1. Install
pip install claude-replayOr from a clone if you'd like to hack on it:
git clone https://github.com/constripacity/Claude-Replay.git
cd Claude-Replay
pip install -e .[dev] # editable install with test/lint deps
pip install -e .[tui] # add the terminal UI deps (textual, httpx)If
pip install -efails on your environment (a known hatchling editable-install quirk on some setups), install the deps directly instead:pip install mcp starlette uvicorn anyio textual httpx.
2. Install the hooks
This wires Replay into Claude Code by merging three hooks into ~/.claude/settings.json. It's idempotent and leaves any other tools' hooks untouched.
claude-replay install✓ Installed Claude Replay hooks into ~/.claude/settings.json
PreToolUse → claude-replay hook pre-tool
PostToolUse → claude-replay hook post-tool
Stop → claude-replay hook stopFrom now on, every Claude Code session is recorded automatically. Remove the hooks any time with claude-replay uninstall (it removes only Replay's hooks).
Confirm it's actually wired up — the one check that matters:
claude-replay doctorClaude Replay — doctor
✓ Hooks installed: PreToolUse / PostToolUse / Stop are in settings.json
✓ Hook command on PATH: claude-replay → …/claude-replay
✓ Database: ~/.claude-replay/sessions.db
✓ Sessions recorded: 3 sessions; most recent 5m ago
All good — Replay is installed and recording. ✓If doctor warns that claude-replay isn't on PATH, the hooks can't run and nothing is recorded — put your install directory on PATH and re-run it.
3. Start the server (dashboard + MCP tools)
claude-replay serve # defaults: 127.0.0.1:8766
claude-replay serve --port 9000 # custom port
claude-replay serve --host 0.0.0.0 # bind all interfaces━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Claude Replay — Session checkpoint & recovery server
Version: 0.4.1
DB: ~/.claude-replay/sessions.db
http://localhost:8766/ ← Dashboard
http://localhost:8766/sse ← MCP config
http://localhost:8766/api/state ← JSON state
http://localhost:8766/status ← Health check
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━4. (Optional) Register the MCP tools with Claude Code
So a running Claude Code session can call replay_resume, replay_checkpoint, etc. directly. Two ways:
SSE (alongside the dashboard — needs claude-replay serve running):
claude mcp add --transport sse -s user claude-replay http://localhost:8766/ssestdio (no server process — the client launches Replay on demand):
claude mcp add -s user claude-replay -- claude-replay mcp
# or, without installing: uvx claude-replay mcpVerify with claude mcp list claude-replay should show ✓ Connected. Inside an already-running session, type /mcp to re-handshake.
When a session dies
# What's the state of the last session?
claude-replay status
# Print a paste-ready resume brief (most recent session, or pass an id)
claude-replay resume
claude-replay resume <session-id>
# Browse every recorded session in the terminal
claude-replay tui # needs `claude-replay serve` running
# Export a session as a self-contained HTML trace
claude-replay export # → ~/.claude-replay/exports/<id>.htmlPaste the resume output into a fresh Claude Code session and it picks up where the dead one left off objective, what was done, what's next, and which files were touched.
MCP Tools
Every connected Claude Code session gets these ten tools:
Tool | Description |
| Current session summary objective, status, how it ended, event/checkpoint counts, last activity |
| Force a checkpoint of the current session now, with an optional note |
| Generate a structured resume brief for a session (default: most recent) |
| List recent sessions with status, model, duration, checkpoint count |
| Per-session metrics: how it ended, duration, tool calls, error rate, files touched, top tools |
| Cross-session analytics: tool calls, error rate, why sessions end, tool mix, per-project rollups |
| Full-text search across sessions with filters (tool, cause, date, project), ranked by match count |
| Compare two sessions: metric deltas + which files each touched |
| Name a session and add/remove tags for later retrieval |
| Render a session as a self-contained trace (html / json / md) and return the path |
CLI Reference
Command | What it does |
| Merge Replay's hooks into |
| Remove only Replay's hooks |
| Current/last session at a glance, with insight metrics |
| List recent sessions (with names + tags) |
| Full-text search with filters (omit query to browse by filter) |
| Compare two sessions side by side |
| Print a resume brief (default: most recent) |
| Render a trace |
| Name or tag a session |
| Delete sessions with no recent activity (destructive) |
| Start the MCP + dashboard server (port 8766) |
| Serve the MCP tools over stdio (for |
| Launch the terminal session browser |
| Delete all recorded sessions (destructive) |
| Internal — invoked by Claude Code's hooks |
Dashboard & TUI
Web dashboard (claude-replay serve, then open http://localhost:8766/) a vanilla-JS view that polls every 2 s: session list (with how-it-ended badge + tags), a live search box, per-session timeline, and one-click "Copy Resume Brief" / "Export HTML". No CDN, no build step.
Terminal UI (claude-replay tui) a Textual browser in the same dark theme. A session sidebar, a live event feed, and a detail inspector showing how the session ended, its tags, the latest checkpoint, and files touched. Keys:
↑↓ navigate Tab switch panel Space pause
r resume (copies the brief to your clipboard)
e export HTML trace
? help q quitThe TUI talks to the server over HTTP start claude-replay serve first (defaults to http://127.0.0.1:8766; point elsewhere with --url).
Configuration
Env var | Default | Purpose |
|
| SQLite store location |
| — | Session identity (Claude Code sets this in the hook payload); falls back to these env vars, then to a hash of the project dir |
| localhost only | Comma-separated extra CORS origins for the server |
| — | Set to disable the static dashboard mount (MCP/JSON only) |
The hook path is offline-first by design: it makes no network calls and completes in well under 50 ms just the one SQLite write. Large tool payloads are truncated at 8 KB per event so the DB stays lean.
Development
pip install -e .[dev] # or install deps directly (see install note)
python -m pytest # full suite
ruff check .Tests use an isolated tmp_path SQLite database (the fresh_db fixture) — they never touch your real ~/.claude-replay/sessions.db. See CONTRIBUTING.md for the scope and the coding rules.
License
MIT see LICENSE.
Sibling to Claude Bridge. Built under the Constripacity banner.
Available Tools
10 toolsreplay_checkpointA
Force a checkpoint of the current session right now, with an optional note.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional note describing the checkpoint |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, not idempotent, and not destructive. The description adds that the checkpoint is forced immediately and scoped to the current session, but it does not disclose side effects, persistence behavior, or failure modes. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise, front-loaded sentence with no redundant phrasing. Every word earns its place, and the most important action and scope appear immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low in complexity with one optional parameter, but the description omits practical context such as whether an active session is required, what happens if no session exists, and what the agent can expect after calling it. Since there is no output schema, a bit more guidance would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single optional 'note' parameter completely, so the description adds little semantic value beyond restating that the note is optional. With 100% schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear directive verb ('Force') plus an explicit resource ('checkpoint of the current session') and mentions the optional note. This distinguishes it cleanly from sibling tools like replay_resume or replay_export, which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. It does not state prerequisites such as requiring an active session, nor does it say when checkpointing is preferable to replay_status, replay_export, or replay_diff. The only contextual clue is 'current session'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_diffARead-only
Compare two sessions side by side: metric deltas (tool calls, errors, duration, files) and which files each touched.
| Name | Required | Description | Default |
|---|---|---|---|
| session_a | Yes | First session ID | |
| session_b | Yes | Second session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, covering the no-mutation behavior. The description adds useful detail about what the comparison surfaces (metric deltas and file-touch differences), but it does not disclose limitations such as how missing or invalid session IDs are handled or whether the diff is a full side-by-side report.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states the core action and the concrete comparison dimensions. Every phrase earns its place, with no filler, tautology, or unnecessary restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only tool, the description is largely complete: it names the inputs' purpose, the operation, and the expected output content. A small gap is the absence of any note about how the comparison is presented or whether the returned data is a summary or a detailed report, but this is not critical given the tool's low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters described as session IDs. The description confirms that the two IDs represent the sessions being compared, but adds no extra meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Compare') and resource ('two sessions side by side'), and enumerates the exact kinds of differences produced: metric deltas for tool calls, errors, duration, files, plus per-file touches. This makes it clearly distinct from siblings like replay_sessions or replay_stats, which list or aggregate sessions rather than diffing two of them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for when a user wants to compare two sessions, but it does not explicitly state when to prefer it over alternatives or when not to use it. It also gives no context about prerequisites, such as whether sessions must be replayed or in the same workspace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_exportAIdempotent
Render a session as a self-contained trace (html, json, or md) and return the output path.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Export format (default: html) | |
| output | No | Output directory (default: ~/.claude-replay/exports) | |
| session_id | No | Session ID (default: most recent) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it is not read-only and is idempotent. The description adds that it returns a path, implying file creation, but does not mention overwriting behavior or potential side effects like creating directories.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that conveys the essential information without redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description sufficiently covers the operation: it renders a session into a self-contained trace and returns the output path. Since there is no output schema, no further explanation of return structure is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters (format, output, session_id). The tool description does not elaborate on them, so it adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (render/export), the resource (a session), the output formats (html, json, or md), and the return value (output path). It is distinct from sibling tools like replay_status or replay_diff.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus the sibling tools. It is clear what it does, but not when to prefer it over alternatives like replay_status or replay_diff.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_insightsARead-only
Per-session insight metrics: how it ended, duration, tool-call count, error count/rate, files touched, and the most-used tools.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | Session ID (default: most recent) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the date-range scoping, which is useful, but doesn't mention pagination or return format. With annotations covering safety, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, scoping constraint front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a filtered-list tool whose annotations already cover safety. It states scope and alternative. No missing information needed to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents the parameter. The description implies date-range filtering but doesn't add syntax or format details beyond the schema. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List'), resource ('ALL calls'), and scope (no user/workspace filtering). It also names the sibling it is not, so an agent can tell it apart without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative tool and the condition that selects it (filtering by user/workspace). The agent knows exactly when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_resumeARead-only
Generate a structured resume brief for a session (default: the most recent). Paste the result into a new Claude Code session to continue where it left off.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | Session ID (default: most recent) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered without needing repetition. The description adds the 'default: most recent' behavior and the workflow advice about pasting, but that overlaps with parameter schema and usage guidance rather than exposing new behavioral traits. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences long and front-loads the main purpose. The second sentence adds immediate practical guidance without fluff, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has just one optional parameter and no output schema, and the description still explains the invocation default and how to use the result. It does not account for edge cases like no existing session or the exact format of the brief, but these are not essential for an agent to correctly call and consume the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with session_id already described as 'Session ID (default: most recent)'. The tool description essentially restates the default without adding semantic detail on format or session selection logic. Given high schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Generate' with a specific resource 'structured resume brief' and states a default behavior ('most recent'), so the core purpose is clear. It does not explicitly distinguish itself from sibling tools like replay_checkpoint or replay_status, which prevents a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit use case: 'Paste the result into a new Claude Code session to continue where it left off.' This provides clear context for when this tool should be used. It does not, however, exclude any alternatives or state which sibling tools should be used instead, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_searchARead-only
Full-text search across recorded sessions (event payloads, objective, name, and tags), with optional filters. Ranked by match count. Omit the query to browse by filters alone.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | Only sessions that used this tool | |
| cause | No | Only sessions with this death cause | |
| limit | No | Max sessions (default: 20) | |
| query | No | Text to search for (optional if filtering) | |
| since | No | Only sessions started after this ISO date | |
| until | No | Only sessions started before this ISO date | |
| project | No | Only sessions whose project dir contains this |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the tool is known to be safe. The description adds behavioral detail that annotations do not: it ranks results by match count, and it supports browsing without a query. It doesn't mention pagination or result structure, but with readOnlyHint covering safety and the description covering search semantics, it is adequate. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core purpose and key features (full-text search, fields, filters, ranking) before the practical note about omitting the query. Every sentence earns its place; there is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description could have been more explicit about what the results look like (e.g., list of session IDs, relevance scores). However, the description covers search scope, filter usage, and ranking. The tool is a read-only search, so missing pagination/result details are a minor gap. It is sufficiently complete for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 7 parameters have descriptions in the schema. The tool description adds context beyond the schema by explaining the overall behavior (e.g., 'Omit the query to browse by filters alone') and clarifies that filters are optional and can be used standalone. This is valuable because it explains the relationship between query and filters, which the schema alone doesn't. A score of 4 reflects this added value above the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs full-text search across recorded sessions with specific fields (event payloads, objective, name, tags) and optional filters. It distinguishes itself from siblings by specifying it searches against session content, whereas siblings like replay_sessions or replay_status likely list or inspect sessions. The verb 'search' plus the resource 'recorded sessions' and scope make it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'Omit the query to browse by filters alone.' It also lists the optional filters (tool, cause, since, until, project) directly in the description, telling the agent when to use this tool (for search) and implicitly when not (when needing exact session retrieval, use replay_sessions). It does not name siblings explicitly, but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_sessionsBRead-only
List recent sessions with status, model, duration, and checkpoint count.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max sessions to list (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the read-only nature is covered. The description adds context about the returned fields but does not disclose additional behavioral traits like rate limits, authentication, or sort order. It is consistent with annotations, earning a baseline score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant wording. It states the action, resource, and key return fields efficiently, earning full marks for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with one optional parameter and no output schema, the description adequately conveys what is returned. It does not mention sorting or pagination, but these are implicit in 'recent' and the limit parameter. Minor gaps exist but are not critical given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single 'limit' parameter with default and description (100% coverage). The description does not add any semantic detail beyond the schema, so it remains at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists recent sessions and specifies the returned fields (status, model, duration, checkpoint count). It is not a tautology and distinguishes itself from siblings that perform actions like resuming, exporting, or diffing, though it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 alternatives such as replay_status or replay_insights. It does not mention exclusions or prerequisites, leaving the agent to infer that it is for general listing without any situational cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_statsBRead-only
Cross-session analytics across all recorded sessions: total tool calls, overall error rate, why sessions end (death-cause breakdown), the tool mix, and per-project rollups. Optional limit / project filter.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Only the N most recent sessions (default: all) | |
| project | No | Only sessions whose project dir contains this |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which the description aligns with by framing as analytics (read-only). The description adds context about the scope (all recorded sessions) and the breakdowns provided, which is useful. However, it doesn't disclose potential performance implications of scanning all sessions, pagination, or how the output is structured. With annotations covering safety, the description adds some value but could include more behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence listing the key metrics, followed by a short clause on filters. It is front-loaded with the core analytics content. It earns its length by covering multiple dimensions of the stats without fluff. Could be slightly more structured but is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
ันGiven that the output schema is absent and the tool returns complex aggregated analytics, the description provides a good overview of what is returned (death-cause breakdown, tool mix, per-project rollups) which partially compensates. However, it does not explain how the results are presented, whether there are any limitations on data range, or how 'error rate' is calculated. For a cross-session aggregation tool, these details could be useful, but the description covers the essentials.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with descriptions for both 'limit' (N most recent sessions) and 'project' (sessions whose project dir contains this). The description mentions 'Optional limit / project filter', which aligns with the schema. No additional semantics beyond schema, which is acceptable given full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as providing cross-session analytics, enumerating specific metrics (tool calls, error rate, death-cause breakdown, tool mix, per-project rollups). It distinguishes from siblings like replay_sessions (listing sessions) and replay_insights (likely more focused analysis) by emphasizing aggregate stats across sessions. Could be more explicit about which sibling it differs from, but the purpose is clear and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for analytics on all recorded sessions, but does not explicitly state when to prefer this over replay_sessions, replay_insights, or replay_status. The optional limit and project filter are mentioned, giving some context on scoping, but no explicit when-not or alternative selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_statusARead-only
Current session summary: objective, status, checkpoint/event counts, last activity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, establishing a safe, read-only operation. The description adds behavioral context by specifying what kind of data is returned and that it represents a snapshot of session activity, substantially contributing beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose ('Current session summary') and then lists the relevant informational fields efficiently. Every part contributes value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only status tool, the description is sufficiently complete. It tells the agent what the tool returns and the scope ('current session'); no output schema exists, but the textual list of contents covers the relevant context for invoking and interpreting the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100%. With no parameters to document, the baseline of 4 applies since there is no schema ambiguity and no need for additional parameter-related guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear resource ('current session') and lists concrete artifacts it returns (objective, status, checkpoint/event counts, last activity). However, it does not explicitly differentiate itself from the sibling tools like replay_sessions or replay_stats, though 'current session' narrows its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever a summary of the current session is needed. It does not state exclusions or alternatives, leaving the agent to infer when a sibling like replay_sessions or replay_checkpoint is more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_tagAIdempotent
Name or tag a session for later retrieval. Sets a name and/or adds/removes tags on a session (default: the most recent).
| Name | Required | Description | Default |
|---|---|---|---|
| add | No | Tags to add | |
| name | No | Human-friendly name | |
| remove | No | Tags to remove | |
| session_id | No | Session ID (default: most recent) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already signal a mutating, idempotent, non-destructive operation. The description adds the basic operations—set name, add/remove tags—and the default session, though the default is also present in the input schema. It does not explain edge behaviors such as name overwrites or conflicting tag operations, but for this simple tool the combination is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver the purpose, the allowed operations, and the default scope without filler. It is front-loaded and every clause is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four optional, fully schema-documented parameters and no output schema, this is nearly complete. A note about what the tool returns would be nice, but the description already contains enough for correct invocation and safe use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes all four parameters with 100% coverage, and the description maps them transparently to 'name' and 'tags'. The description adds little beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific operation—name or tag a session—with clear verbs 'Name'/'Sets' and the object 'session'. It unambiguously distinguishes this from sibling tools like replay_checkpoint, replay_resume, and replay_search, which address different session concerns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for later retrieval' conveys a concrete use case, and the action scope is clear: name and/or tag a session, defaulting to the most recent. It does not explicitly exclude or mention alternatives, but the context is strong enough for an agent to select this tool appropriately.
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. Dates show when Glama detected each change.
10 tool updates
v1.0.0- First observed
replay_checkpoint - First observed
replay_diff - First observed
replay_export - First observed
replay_insights - First observed
replay_resume - First observed
replay_search - First observed
replay_sessions - First observed
replay_stats - First observed
replay_status - First observed
replay_tag
TDQS
Each tool has a clearly distinct purpose: checkpointing, resuming, status, listing, exporting, searching, tagging, insights, diffing, and stats. No two tools overlap in functionality.
All tools follow the consistent pattern `replay_<verb>`, with each verb accurately describing the action. The naming is uniform and predictable.
With 10 tools, the set is comprehensive but not overwhelming, covering a wide range of session management features without redundancy.
The toolset covers most session lifecycle aspects (create, read, update via tagging, export, search, analyze), but lacks explicit deletion or renaming of sessions, which might be a minor gap.
Maintenance
Related MCP Connectors
Hosted MCP memory: save sessions/decisions once, search from Claude, Cursor, ChatGPT. EU-hosted FTS.
AI Visibility and Content Intelligence tools for Claude and MCP-compatible agents.
Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).
Private persistent memory for Claude, ChatGPT & Gemini via MCP - semantic search, zero-code setup.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables searching and retrieving Claude Code conversation history that would otherwise expire after 30 days. Supports full-text search, semantic search, and session management with automatic backup of all conversations.728MIT
- AlicenseAqualityDmaintenanceWraps Claude Code as tools for MCP clients, enabling autonomous coding tasks via a 4-tool lifecycle with session management, async polling, and permission controls.45720MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI-driven semantic code search via natural language queries, integrating with MCP clients like Claude Desktop to retrieve relevant code context from any codebase.MIT
- AlicenseNot gradedqualityCmaintenanceEnables importing Claude Code and opencode session history into a searchable memory store and surfacing improvement suggestions, accessible from any MCP-capable client.13MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/constripacity/Claude-Replay'
If you have feedback or need assistance with the MCP directory API, please join our Discord server