---
canonical_url: "https://docs.composio.dev/toolkits/replay_mcp"
markdown_url: "https://docs.composio.dev/toolkits/replay_mcp.md"
product: "platform"
version: null
last_updated: null
---

# Replay MCP

Replay MCP lets agents inspect time-travel browser recordings, including console output, exceptions, network activity, source code, React state, performance profiles, screenshots, and execution points.

- **Category:** model context protocol
- **Auth:** API_KEY
- **Composio-managed OAuth available?** N/A
- **Tools:** 32
- **Triggers:** 0
- **Slug:** `REPLAY_MCP`
- **Version:** 00000000_00

## Tools

### Annotations

**Slug:** `REPLAY_MCP_ANNOTATIONS`

Inspect the annotations in a recording. Annotations are timestamped records attached by the runtime and integrations (e.g. Cypress, Playwright, React DevTools, network, localStorage). Call with no arguments to list all annotation kinds in the recording with their counts. Pass a 'kind' to return the annotation data for that kind (paginated, optionally filtered by text). For WebSocket traffic (DOMWebSocket annotations), use the WebSocketMessages tool instead.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `kind` | string | No | Annotation kind to return data for. When omitted, lists all annotation kinds in the recording with their counts. |
| `limit` | integer | No | Pagination page size (default 25). Only applies when a kind is provided. |
| `offset` | integer | No | Pagination offset. Only applies when a kind is provided. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `filterByText` | string | No | Substring filter (case-insensitive) on annotation contents. Only applies when a kind is provided. |

### Consolemessages

**Slug:** `REPLAY_MCP_CONSOLE_MESSAGES`

Show console API messages (console.log, console.warn, console.error, etc.). Note: console errors are distinct from runtime exceptions — use UncaughtException and ReactException for those. Start with mode 'summary' for an overview with message counts and the last errors/warnings. Use 'messages' to browse the full paginated list (filter by level, text, node_modules visibility). Use 'message-detail' with a point reference for full detail on a single message including stack trace. Call RecordingOverview first for broader context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("summary" | "messages" | "message-detail") | No | Analysis mode: summary (overview with counts and last errors, default), messages (paginated filtered list), message-detail (full detail for a single message by point) |
| `level` | string ("error" | "warning" | "info" | "log" | "all") | No | Filter by console message level (messages mode only). 'all' shows all levels. |
| `limit` | integer | No | Pagination page size (default 25, messages mode only) |
| `point` | string | No | Point reference for message-detail mode (e.g. 'Point:42'). Required for message-detail. |
| `offset` | integer | No | Pagination offset (messages mode only) |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `filterByText` | string | No | Substring filter on message text (messages mode only) |
| `showNodeModules` | boolean | No | When true, include messages originating from node_modules/library code (messages mode only, default false). |

### Describepoint

**Slug:** `REPLAY_MCP_DESCRIBE_POINT`

Describes the application state at a code execution point. Shows the containing function with executed/not-executed annotations, variable values, and timestamps. Use dependencyChain=true to trace the full causal chain back to the origin event. Get execution points from other tools (ConsoleMessages, ReactRenders, ReduxActions, Logpoint, etc.).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `point` | string | Yes |  |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `dependencyChain` | boolean | No | If true, show the full dependency chain from this point back to its origin source. |
| `describeLibraryCode` | boolean | No |  |

### Evaluate

**Slug:** `REPLAY_MCP_EVALUATE`

Evaluates an expression at a code execution point. Use for ad-hoc value inspection beyond what DescribePoint shows. Expressions must be synchronous and immediately inspectable. Do not use async functions or promises; replay cannot inspect their eventual results. Defaults to frame scope; use global scope explicitly when needed. String results are returned in full up to maxStringLength characters (default 100000); longer strings end with a truncation notice giving the stringOffset to read the next part. String results longer than about 8,000 characters are read by evaluating the expression a second time, so use a single, side-effect-free expression to get the full text.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `point` | string | Yes | The execution point at which to evaluate the expression. Get point references from tools such as DescribePoint, ConsoleMessages, ReactRenders, ReduxActions, or Logpoint. |
| `scope` | string ("frame" | "global") | No | Evaluate in the selected scope. Frame scope can read local variables at code execution points; global scope evaluates against the page global. |
| `expression` | string | Yes | A synchronous JavaScript expression to evaluate. Do not use async functions or promises; their eventual results cannot be inspected in replay. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `stringOffset` | integer | No | When the result is a string, the character offset to start returning from. Use the offset given in a truncation notice to read the next part. |
| `maxStringLength` | integer | No | When the result is a string, the maximum number of characters to return (default 100000). |

### Executiondelay

**Slug:** `REPLAY_MCP_EXECUTION_DELAY`

Computes execution delays for functions based on their source length and the delay before the first breakpoint in each function executes. Each breakpoint is attributed to the innermost function covering it, and each function's weight is computed as its source length minus the sum of its children's lengths.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `path` | string | Yes |  |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Getpointcomponent

**Slug:** `REPLAY_MCP_GET_POINT_COMPONENT`

Gets the React component being rendered at a code execution point.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `point` | string | Yes |  |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Getpointlink

**Slug:** `REPLAY_MCP_GET_POINT_LINK`

Generates an app.replay.io link for users to inspect a given execution point.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `point` | string | Yes |  |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Getstack

**Slug:** `REPLAY_MCP_GET_STACK`

Gets the call stack at a code execution point. Use to understand execution context. Pair with DescribePoint for full state.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `point` | string | Yes |  |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Inspectelement

**Slug:** `REPLAY_MCP_INSPECT_ELEMENT`

Get size, layout, ancestry and render point information for a DOM element. Find relevant code before inspecting elements. Only use this tool sparingly — expensive, requires full DOM layout computation. Prefer ReactComponentTree for component structure.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `point` | string | No | Execution point, e.g. Point:1. Leave empty to pick point at end of recording. |
| `element` | string | Yes | Either a known element reference (e.g., 'Element:42') or CSS selector (e.g., '#button' or '.class'). Must NOT be a Playwright locator call |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Listsources

**Slug:** `REPLAY_MCP_LIST_SOURCES`

List the sources in the recording.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pathGlob` | string | No |  |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Localstorage

**Slug:** `REPLAY_MCP_LOCAL_STORAGE`

Describe all the accesses made to localStorage. Start with mode 'summary' (default) for a grouped overview: keys with access counts, final values, and timing. Use 'operations' to browse the full chronological access list with pagination. Use keyFilter to narrow by key name (substring match). For large apps, consider filtering by key pattern in results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("summary" | "operations") | No | summary: keys grouped with access counts and final values (default). operations: paginated list of individual localStorage accesses. |
| `limit` | integer | No | Pagination page size (default 25). Used in 'operations' mode. |
| `offset` | integer | No | Pagination offset. Used in 'operations' mode. |
| `keyFilter` | string | No | Only show accesses whose key contains this substring (case-insensitive). Applies to both modes. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Logpoint

**Slug:** `REPLAY_MCP_LOGPOINT`

Evaluates an expression at breakpoint hits for a given path and line number. Returns up to 20 hits with their expression evaluation results. Use beginPoint/endPoint to narrow the range. Use column to target a specific statement on the line. Find source paths with ListSources or SearchSources first.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `line` | number | Yes |  |
| `path` | string | Yes |  |
| `column` | number | No | 0-based column number. If specified, the breakpoint will be at or after this column on the given line. |
| `format` | string ("markdown" | "json") | No | Output format. 'json' returns structured data; 'markdown' (default) returns formatted text. |
| `endPoint` | string | No |  |
| `beginPoint` | string | No |  |
| `expression` | string | Yes |  |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Networkrequest

**Slug:** `REPLAY_MCP_NETWORK_REQUEST`

Analyze network requests in the recording. Start with mode 'summary' (default) for high-level stats: total count, failed/slow counts, status code distribution, and top domains. Use 'requests' to browse a paginated table of all requests (filterable by urlFilter, startTime, endTime). Use 'detail' with requestId (from the ID column in the 'requests' table) for full request/response headers, body content, event timeline, and backend function analysis. RECOMMENDED workflow: summary → requests → detail. Call RecordingOverview first for broader context about the recording.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("summary" | "requests" | "detail") | No | summary: high-level stats (count, failures, slow, status distribution, top domains). requests: paginated table of all requests. detail: full detail for a single request (headers, body, timing). |
| `limit` | integer | No | Pagination page size (default 25). Used in 'requests' mode. |
| `format` | string ("markdown" | "json") | No | Output format. 'markdown' (default) for human-readable text. 'json' for structured data (summary/requests modes only; detail mode always returns markdown). |
| `offset` | integer | No | Pagination offset. Used in 'requests' mode. |
| `endTime` | number | No | Only show requests that started at or before this time (ms). |
| `requestId` | string | No | Request ID from the ID column of the 'requests' table. Preferred way to select a request in 'detail' mode; stable across filters. |
| `startTime` | number | No | Only show requests that started at or after this time (ms). |
| `urlFilter` | string | No | Only show requests whose URL contains this substring. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `requestIndex` | integer | No | 0-based position in the 'requests' table. Only valid with the same filters used for that table; prefer requestId. |
| `slowThresholdMs` | number | No | Duration threshold (ms) to consider a request slow. Default 2000. |

### Playwrightsteps

**Slug:** `REPLAY_MCP_PLAYWRIGHT_STEPS`

Show all steps taken by Playwright in the recording. Start with mode 'summary' for a test overview with pass/fail status and duration. Use 'steps' with testIndex to see the step list for a specific test (get indices from 'summary'). Use 'step-detail' with stepNumber for inspector protocol commands of a single step (get step numbers from 'steps'). Use 'test-source' with testIndex to read the test source code. For failed tests, use failedOnly=true in 'steps' mode to focus on failures. Call RecordingOverview first for broader context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `last` | integer | No | Show only the last N steps (steps mode only) |
| `mode` | string ("summary" | "steps" | "step-detail" | "test-source") | No | Analysis mode: summary (test overview with pass/fail), steps (paginated step list for a test), step-detail (inspector protocol commands for a single step), test-source (test source code) |
| `limit` | integer | No | Pagination page size (default 25, steps mode only) |
| `offset` | integer | No | Pagination offset (steps mode only) |
| `testIndex` | integer | No | 0-based test index — required for 'steps' and 'test-source' modes |
| `failedOnly` | boolean | No | When true, only show failed steps (steps mode only) |
| `stepNumber` | integer | No | 1-based step number — required for 'step-detail' mode. If provided without a mode, automatically selects 'step-detail' mode. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `collapseRetries` | boolean | No | Group consecutive retry attempts (3+ identical apiName+params) into collapsed summaries (steps mode only). Defaults to true. |

### Profilegraph

**Slug:** `REPLAY_MCP_PROFILE_GRAPH`

Profiles dependency graph entry execution between two points in a recording. Enumerates all dependency graph entries including React fiber renders and effect calls, computes the execution associated with each by progress counter differences, traces each entry back to its source via the dependency chain, and groups results by source ordered by execution amount.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `endPoint` | string | No | The end execution point. Defaults to the end of the recording. |
| `beginPoint` | string | No | The start execution point. Defaults to the beginning of the recording. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `coverageFraction` | number | No | Fraction of total execution to cover (0-1). Sources are included in order of execution amount until this fraction is reached. Within each source, entries are similarly filtered. Defaults to 0.95. |

### Profilesampling

**Slug:** `REPLAY_MCP_PROFILE_SAMPLING`

Profiles the native C++ replay engine using stack sampling between two execution points. Runs the replay engine from the begin point to the end point while collecting periodic stack samples, then analyzes the samples to produce a flat profile of where time is spent in native code.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `endPoint` | string | No | The end execution point. Defaults to the end of the recording. |
| `beginPoint` | string | No | The start execution point. Defaults to the beginning of the recording. |
| `numProfiles` | number | No | Number of profiles to run and average. Defaults to 1. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `profilingIntervalMs` | number | No | Sampling interval in milliseconds. Defaults to 20ms. |

### Profilestatements

**Slug:** `REPLAY_MCP_PROFILE_STATEMENTS`

Profiles JS statement execution between two points in a recording. Fetches all breakpoint hits between the points, breaks them down by function, resolves function names, and computes a flat profile and call tree showing statement hits per function and its callees.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `maxHits` | number | No | Maximum number of breakpoint hits to scan. Defaults to 1000000. |
| `endPoint` | string | No | The end execution point. Defaults to the end of the recording. |
| `beginPoint` | string | No | The start execution point. Defaults to the beginning of the recording. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `coverageFraction` | number | No | Fraction of total hits to cover (0-1). Functions are included in order of hit count until this fraction is reached. Defaults to 0.95. |

### Reactcomponenttree

**Slug:** `REPLAY_MCP_REACT_COMPONENT_TREE`

Get the structure of the committed/mounted React component tree at a point in time. Start with mode='summary' for an overview of component counts and top-level structure. Use mode='tree' to see a paginated, depth-limited hierarchy with collapse markers. Use mode='subtree' with 'component' to focus on a specific component's ancestors and descendants. Use 'nameFilter' to search for components by name. Use 'hideFilter' to remove noise (e.g. Provider, Consumer). For render-level analysis (timing, waste, causes), use ReactRenders instead.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("summary" | "tree" | "subtree") | No | Analysis mode: summary (stats overview), tree (paginated hierarchy), subtree (focused view on a specific component) |
| `limit` | integer | No | Pagination page size (default 50). |
| `point` | string | No | The execution point at which to describe the React component tree. Defaults to the end of the recording. |
| `format` | string ("markdown" | "json") | No | Response format. 'markdown' (default) returns formatted text for LLM agents. 'json' returns structured JSON for programmatic callers. |
| `offset` | integer | No | Pagination offset into the visible (uncollapsed) tree. |
| `maxDepth` | integer | No | Max depth to expand. Nodes deeper than this are collapsed with descendant counts. In subtree mode, depth is relative to the focused component. |
| `component` | string | No | Component name or fiber reference (e.g. 'Button' or 'Component:42') to focus on. Required for subtree mode. Shows ancestors + subtree. |
| `hideFilter` | string | No | Regex pattern — hide components matching this name and reparent their children up. Applied at tree construction time. |
| `nameFilter` | string | No | Show only components matching this name (case-insensitive substring). Ancestors of matches are auto-expanded for context. Tree mode only. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Reactexception

**Slug:** `REPLAY_MCP_REACT_EXCEPTION`

Describe any exceptions thrown which caused React to unmount. This finds React error boundary crashes and render-phase exceptions. For non-React uncaught exceptions, use UncaughtException instead. RecordingOverview includes an error summary — call that first for context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Reactperformanceinsights

**Slug:** `REPLAY_MCP_REACT_PERFORMANCE_INSIGHTS`

Run all deterministic React performance checks on a recording and return prioritized findings. Each finding includes user-visible impact, specific timing, affected components, and suggested actions. Use this for a comprehensive performance audit — it detects heavy commits (>50ms), render loops, expensive state updates, and more. Call RecordingOverview first for broader context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `format` | string ("markdown" | "json") | No | Response format: 'markdown' (default) for human-readable output, 'json' for structured data (use only from programmatic callers) |
| `endTime` | number | No | Optional end time (ms) for range filtering |
| `endPoint` | string | No | Optional end execution point for range filtering |
| `beginTime` | number | No | Optional begin time (ms) for range filtering |
| `beginPoint` | string | No | Optional begin execution point for range filtering |
| `categories` | array | No | Run only specific check categories (default: all available) |
| `maxFindings` | number | No | Maximum findings to return (default: 30) |
| `minSeverity` | string ("critical" | "warning" | "info") | No | Minimum severity to include (default: info) |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `componentFilter` | array | No | Only include findings involving these components |
| `includeSuppressedFindings` | boolean | No | Also report findings dropped by same-commit deduplication or the maxFindings cap. Useful when applying your own prioritization policy or debugging check behavior. |

### Reactrenders

**Slug:** `REPLAY_MCP_REACT_RENDERS`

Analyze React renders in a recording. Start with mode 'summary' for a recording-wide overview of commits and render time. Use 'waste-rank' to find components with the most wasted renders. Use 'commits' to browse render commits chronologically. Use 'commit' with commitIndex for single commit detail (get indices from 'commits'). Use 'component' with componentName to see a component across all commits (get names from 'waste-rank'). Use 'fiber' with fiberId to see all renders for a specific fiber instance (add includeProps=true for prop values at each render). Use 'trigger-detail' with commitIndex to trace the dependency chain (click, network, dispatch) that triggered a commit. Use 'commit-fibers' and 'fiber-cause' for fiber-level causation analysis. Call RecordingOverview first for broader context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("summary" | "commits" | "commit" | "waste-rank" | "component" | "fiber" | "commit-fibers" | "fiber-cause" | "trigger-detail") | No | Analysis mode: summary (overview), commits (paginated list), commit (single commit detail), waste-rank (component waste ranking), component (single component detail), fiber (single fiber instance across all commits, add includeProps for prop values), commit-fibers (list fibers of a component in a commit), fiber-cause (render cause for a specific fiber), trigger-detail (dependency chain tracing for a commit's trigger events) |
| `limit` | integer | No | Pagination page size (default 25) |
| `format` | string ("markdown" | "json") | No | Response format: 'markdown' (default) for human-readable output, 'json' for structured data (use only from programmatic callers) |
| `offset` | integer | No | Pagination offset |
| `endTime` | number | No | Optional end time (ms) for range filtering |
| `fiberId` | integer | No | Fiber ID — required for 'fiber' and 'fiber-cause' modes |
| `endPoint` | string | No | Optional end point for range filtering |
| `beginTime` | number | No | Optional begin time (ms) for range filtering |
| `beginPoint` | string | No | Optional begin point for range filtering |
| `commitIndex` | integer | No | Commit index — required for 'commit', 'commit-fibers', and 'fiber-cause' modes |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `includeProps` | boolean | No | When true in 'fiber' mode, evaluate and include component props at each render. Expensive — creates a pause per render to inspect arguments. Use only when you need prop values. |
| `componentName` | string | No | Component name — required for 'component' and 'commit-fibers' modes |

### Readsource

**Slug:** `REPLAY_MCP_READ_SOURCE`

Read up to 50 lines of code centered around the given line and see what statements executed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `line` | number | No | The line at which to center the code window. |
| `path` | string | Yes |  |
| `column` | number | No | 0-based column number. When provided with a line, the view will be centered on the breakpoint at or after this column. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Recordingoverview

**Slug:** `REPLAY_MCP_RECORDING_OVERVIEW`

Provides a comprehensive overview of a recording: test results, errors, environment info, network activity, React render performance, and suggested next investigation steps. Call this first to understand what happened in a recording before diving into specific tools. NOTE: The first call on a cold recording may take 3-4 minutes while initial data is computed. Set a longer timeout for this tool. Subsequent calls will be fast.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `format` | string ("markdown" | "json") | No | Response format: 'markdown' (default) for human-readable output, 'json' for structured data (use only from programmatic callers) |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Reduxactions

**Slug:** `REPLAY_MCP_REDUX_ACTIONS`

Analyze Redux actions in a recording. Currently covers Redux/RTK dispatches via source-level instrumentation. Start with mode 'summary' to see action type frequency and correlation stats. Use 'actions' to browse dispatches chronologically (filterable by actionType substring). Use 'action-detail' with actionIndex for full correlation data: timing breakdown, selector stats, component render timings, and dispatch origin location. Use 'impact' with actionIndex for a render impact report with optimization recommendations. Use 'state-shape' to see a lightweight key/type listing of the state tree (~200–400 tokens). RECOMMENDED: use state-shape FIRST to understand the state structure, then drill in. Use 'action-state' with actionIndex to see actual state values at a dispatch point. STRONGLY RECOMMENDED: use the 'path' param (e.g. path='auth.user') to drill into specific subtrees instead of dumping the entire state tree. Call RecordingOverview first for broader context about the recording.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("summary" | "actions" | "action-detail" | "impact" | "action-state" | "state-shape") | No | Analysis mode: summary (overview of all Redux activity), actions (paginated list of dispatched actions), action-detail (full detail for one action including correlation data), impact (render impact report for a specific dispatch), action-state (Redux state snapshot at a dispatch point — use path param to drill into subtrees), state-shape (lightweight key/type listing of the state tree — cheap overview before drilling in). RECOMMENDED workflow: state-shape → action-state with path → action-diff |
| `path` | string | No | Dot-separated path to drill into a state subtree (action-state, state-shape modes). E.g. 'auth.user.profile'. Omit to see the full state tree (with depth limiting). |
| `depth` | integer | No | Max serialization depth for action-state mode (1–8, default 4). Use lower values for a quick overview, higher for detailed subtrees. |
| `limit` | integer | No | Pagination page size (default 25) |
| `offset` | integer | No | Pagination offset |
| `endTime` | number | No | Optional end time (ms) for range filtering |
| `beginTime` | number | No | Optional begin time (ms) for range filtering |
| `actionType` | string | No | Filter by action type (case-insensitive substring match). Applies to 'actions' mode. |
| `actionIndex` | integer | No | 0-based action index — required for 'action-detail' and 'impact' modes |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Screenshot

**Slug:** `REPLAY_MCP_SCREENSHOT`

Lists all screenshot timestamps in the recording, or fetches a screenshot at a given timestamp. Call without timestamp to list all available timestamps. Call with timestamp to get a screenshot URL with mouse position, movements, and time since last click. Set base64=true for raw image data. RecordingOverview suggests a key screenshot timestamp — call that first.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `base64` | boolean | No |  |
| `format` | string ("markdown" | "json") | No | Output format. 'markdown' (default) returns human-readable text. 'json' returns structured JSON. Ignored when base64=true. |
| `element` | string | No | Either a known element reference (e.g., 'Element:42') or CSS selector (e.g., '#button' or '.class'). Crops screenshot to element bounds. |
| `timestamp` | number | No |  |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Searchsources

**Slug:** `REPLAY_MCP_SEARCH_SOURCES`

Search the sources in the recording and see which statements executed. Note: Playwright test runner code runs in Node outside the browser recording and won't appear here. Use PlaywrightSteps(mode: test-source) for Playwright test source.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pattern` | string | Yes | Regex pattern to search for. |
| `pathGlob` | string | No | Path glob pattern. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `includeGenerated` | boolean | No | Include generated/bundled sources and node_modules. Required for recordings without sourcemaps. |

### Tanstackqueries

**Slug:** `REPLAY_MCP_TAN_STACK_QUERIES`

Analyze TanStack Query (React Query) cache events in a recording. Start with mode 'summary' for an overview of all queries with lifecycle stats. Use 'query-events' with queryHash to see the event timeline for a specific query. Use 'query-timeline' for a chronological view across ALL queries. Use 'query-state' with queryHash + eventIndex to inspect cached data at a specific event point. Observer-internal events are filtered by default; use eventType filter to include them. Call RecordingOverview first for broader context about the recording.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("summary" | "query-events" | "query-timeline" | "query-state") | No | Analysis mode: summary (overview of all queries), query-events (timeline of events for a specific query by queryHash), query-timeline (full timeline across ALL queries ordered by time), query-state (evaluate cached data at a specific event point) |
| `depth` | integer | No | Max serialization depth for query-state mode (1–8, default 3). Use lower values for a quick overview, higher for detailed data. |
| `limit` | integer | No | Pagination page size (default 25) |
| `offset` | integer | No | Pagination offset |
| `eventType` | string | No | Filter by event type (e.g. "updated", "added", "observerAdded") |
| `queryHash` | string | No | Query hash string — required for query-events and query-state modes |
| `eventIndex` | integer | No | 0-based index of event within the query's event list — required for query-state mode |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Uncaughtexception

**Slug:** `REPLAY_MCP_UNCAUGHT_EXCEPTION`

Describe uncaught exceptions and unhandled promise rejections (runtime errors not caught by try/catch). Reports up to 5 distinct errors in time order. Each entry gives the throw site and the first non-library caller, or just the error text when the recording has no matching throw (e.g. script syntax errors). For React-specific exceptions that unmounted the app, use ReactException instead. RecordingOverview includes an error summary — call that first for context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Userinteractions

**Slug:** `REPLAY_MCP_USER_INTERACTIONS`

Show all user interactions (clicks and key presses) in the recording. Start with mode 'summary' (default) for interaction counts by type, time range, top keys pressed, and activity timeline. Use 'interactions' to browse a paginated chronological list with point references for DescribePoint, Evaluate, or GetStack. Use type filter ('click' or 'keypress') to narrow by interaction kind. Useful for understanding the sequence of user actions that led to a bug.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("summary" | "interactions") | No | summary: interaction counts by type, time range (default). interactions: paginated chronological list of all interactions. |
| `type` | string ("click" | "keypress" | "all") | No | Filter by interaction type. 'click' for mouse clicks, 'keypress' for key presses, 'all' for both. |
| `limit` | integer | No | Pagination page size (default 25). Used in 'interactions' mode. |
| `format` | string ("markdown" | "json") | No | Output format. 'markdown' (default) for human-readable Markdown. 'json' for structured JSON data. |
| `offset` | integer | No | Pagination offset. Used in 'interactions' mode. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |

### Warmrecording

**Slug:** `REPLAY_MCP_WARM_RECORDING`

Starts processing a recording if needed and reports its status. Call this before other tools on a recording that may not be loaded yet. Returns state 'ready' when other tools will respond quickly, 'processing' with phase, progress counts, and an estimated time remaining (eta, may be null) while it is still loading, or 'crashed'/'failed' with an error when the recording cannot be analyzed. Safe to call repeatedly; call again while the state is 'processing'. msSinceLastProgress only indicates a stall in the 'starting' and 'scanning' phases; in 'analyzing' there are no progress updates while the instrument engine runs, so treat eta.exceeded as the sign that something is wrong. The eta is recomputed on every call and can go up, for example when the instrument engine starts; reset any deadline when phase or instrumentEngine.state changes. A crashed or failed server is shut down after a few minutes, and the next call starts a fresh one with a new startedAt; retry at most once since crashes often repeat. When a server replaced an earlier one for the same recording, previousRun says how the earlier one ended; previousRun.unexpected means it died without reporting a crash. That can be the recording (for example running out of memory) or the infrastructure (for example a node reclaimed without warning), so keep waiting on the new server and treat it as a crash only if the next server for the recording also ends unexpectedly.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `until` | string ("ready" | "scanned") | No | What to wait for before returning. 'ready' (default) waits until other tools will respond quickly. 'scanned' returns once region scanning has finished (scan.done), which is enough to open the recording in a debugger but not for analysis tools. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `waitSeconds` | number | No | How long to wait for processing to finish before returning the current status. Defaults to 60, capped at 60. Use 0 to return immediately. |
| `expectLibraryInstrumentation` | boolean | No | Whether the recording is known to use a library the backend instruments, such as React. Only affects the upper bound of the time estimate before library detection finishes; false gives a tighter upper bound. Omit if unknown. The recording keeps one value; the most recent caller to pass it wins. |

### Websocketmessages

**Slug:** `REPLAY_MCP_WEB_SOCKET_MESSAGES`

Inspect the WebSocket connections in a recording and the messages sent and received on them. Default mode 'connections' lists each connection with its URL, status (open, open until the recording ended, still connecting, never connected, failed to connect, dropped, closed by client, closed) and message counts. Mode 'connection' lists the messages on a connection (paginated, filterable by direction and text); sent messages include a point reference for the send() call. Mode 'message' shows the contents of one message by messageId. JSON messages too large to show whole are shown as an outline of keys, types and sizes; pass path (e.g. 'result.items.3') to see one part. Unknown connectionId or messageId values are rejected with the list of valid IDs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("connections" | "connection" | "message") | No | connections: list every WebSocket connection with its URL, status and message counts. connection: list the messages on one connection (or all connections when connectionId is omitted). message: show the full contents of one message. |
| `path` | string | No | message mode, JSON messages only: dotted path to one part of the message, e.g. 'result.sources.3' or 'params.data'. Large JSON messages are shown as an outline; use the paths from the outline to see the parts you need. |
| `limit` | integer | No | Page size for connection mode (default 25). |
| `format` | string ("markdown" | "json") | No | Response format: 'markdown' (default) for human-readable output, 'json' for structured data (use only from programmatic callers) |
| `offset` | integer | No | connection mode: index of the first message to show. message mode: character offset into non-JSON message text (or a string selected with path), for text too long to show at once. |
| `direction` | string ("sent" | "received") | No | Only show messages sent by the page or received from the server. connection mode only. |
| `messageId` | string | No | Message ID from connection mode, e.g. "m12". Required for message mode. |
| `urlFilter` | string | No | Substring filter (case-insensitive) on the connection URL. connections mode only. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
| `connectionId` | string | No | Connection ID from connections mode, e.g. "ws1". connection mode only. |
| `filterByText` | string | No | Substring filter (case-insensitive) on message text. connection mode only. |

### Zustandstores

**Slug:** `REPLAY_MCP_ZUSTAND_STORES`

Analyze Zustand stores in a recording. Start with mode 'summary' to see all stores and their setState call counts. Use 'store-events' with a storeId to browse setState calls chronologically. Use 'store-state' with storeId and eventIndex to inspect the state at a specific setState call (shows the updater identity, incoming changes, merged result, and previous state). Call RecordingOverview first for broader context about the recording.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("summary" | "store-events" | "store-state") | No | Analysis mode: summary (overview of all Zustand stores and setState call counts), store-events (paginated timeline of setState calls for a specific store), store-state (evaluate state at a specific setState point — shows updater identity, incoming changes, merged result, and previous state) |
| `depth` | integer | No | Max serialization depth for state inspection (1–8, default 3). Use lower values for a quick overview, higher for detailed subtrees. |
| `limit` | integer | No | Pagination page size (default 25) — applies to 'store-events' mode |
| `offset` | integer | No | Pagination offset — applies to 'store-events' mode |
| `storeId` | integer | No | Store ID — required for 'store-events' and 'store-state' modes. Get available IDs from the 'summary' mode. |
| `eventIndex` | integer | No | 0-based index of the setState event within the store — required for 'store-state' mode. Get event indices from 'store-events' mode. |
| `recordingId` | string | Yes | The ID of the recording to analyze. |
