The Replay MCP connector routes your AI agent's tool calls to Replay's own MCP server through Scalekit. Each user signs in to Replay once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 32 tools.
- Tools
- 32
- What they doRead · write · destructive
- 32 · 0 · 032 read0 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Your own Replay MCP server app
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Replay MCP connection
In AgentKit > Connections, create a Replay MCP connection and copy its redirect URI. The name you give it is the
connection_nameyour code passes. See Configure connections.Register an OAuth app
Replay MCP server connections use your own OAuth app. Register one with Replay MCP server and add the redirect URI you copied.
Then enter the app's Client ID and Client Secret on the Replay MCP connection.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'replaymcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Replay MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'replaymcp_annotations',toolInput: { recordingId: 'YOUR_RECORDINGID' },})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "replaymcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Replay MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={"recordingId":"YOUR_RECORDINGID"},tool_name="replaymcp_annotations",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolreplaymcp_annotationsInspect the annotations in a recording.Read-onlyAnnotations
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
filterByTextstring- Substring filter (case-insensitive) on annotation contents. Only applies when a kind is provided.
kindstring- Annotation kind to return data for. When omitted, lists all annotation kinds in the recording with their counts.
limitinteger- Pagination page size (default 25). Only applies when a kind is provided.default
25 offsetinteger- Pagination offset. Only applies when a kind is provided.default
0
replaymcp_consolemessagesShow console API messages (console.log, console.warn, console.error, etc.).Read-onlyConsoleMessages
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
filterByTextstring- Substring filter on message text (messages mode only)
levelstring- Filter by console message level (messages mode only). 'all' shows all levels.one of
errorwarninginfologalldefaultall limitinteger- Pagination page size (default 25, messages mode only)default
25 modestring- Analysis mode: summary (overview with counts and last errors, default), messages (paginated filtered list), message-detail (full detail for a single message by point)one of
summarymessagesmessage-detaildefaultsummary offsetinteger- Pagination offset (messages mode only)default
0 pointstring- Point reference for message-detail mode (e.g. 'Point:42'). Required for message-detail.
showNodeModulesboolean- When true, include messages originating from node_modules/library code (messages mode only, default false).default
false
replaymcp_describepointDescribes the application state at a code execution point.Read-onlyDescribePoint
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.).
Inputs
pointstringrequired- The execution point to describe.
recordingIdstringrequired- The ID of the recording to analyze.
dependencyChainboolean- If true, show the full dependency chain from this point back to its origin source.
describeLibraryCodeboolean- Whether to describe library code.
replaymcp_evaluateEvaluates an expression at a code execution point.Read-onlyEvaluate
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.
Inputs
expressionstringrequired- A synchronous JavaScript expression to evaluate. Do not use async functions or promises; their eventual results cannot be inspected in replay.
pointstringrequired- The execution point at which to evaluate the expression. Get point references from tools such as DescribePoint, ConsoleMessages, ReactRenders, ReduxActions, or Logpoint.
recordingIdstringrequired- The ID of the recording to analyze.
maxStringLengthinteger- When the result is a string, the maximum number of characters to return (default 100000).default
100000 scopestring- Evaluate in the selected scope. Frame scope can read local variables at code execution points; global scope evaluates against the page global.one of
frameglobaldefaultframe stringOffsetinteger- 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.default
0
replaymcp_executiondelayComputes execution delays for functions based on their source length and the delay before the first breakpoint in each function executes.Read-onlyExecutionDelay
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.
Inputs
pathstringrequired- The path of the source file within the recording.
recordingIdstringrequired- The ID of the recording to analyze.
replaymcp_getpointcomponentGets the React component being rendered at a code execution point.Read-onlyGetPointComponent
Gets the React component being rendered at a code execution point.
Inputs
pointstringrequired- The execution point at which to get the rendered React component.
recordingIdstringrequired- The ID of the recording to analyze.
replaymcp_getpointlinkGenerates an app.replay.io link for users to inspect a given execution point.Read-onlyGetPointLink
Generates an app.replay.io link for users to inspect a given execution point.
Inputs
pointstringrequired- The execution point to generate a link for.
recordingIdstringrequired- The ID of the recording to analyze.
replaymcp_getstackGets the call stack at a code execution point.Read-onlyGetStack
Gets the call stack at a code execution point. Use to understand execution context. Pair with DescribePoint for full state.
Inputs
pointstringrequired- The execution point at which to get the call stack.
recordingIdstringrequired- The ID of the recording to analyze.
replaymcp_inspectelementGet size, layout, ancestry and render point information for a DOM element.Read-onlyInspectElement
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.
Inputs
elementstringrequired- Either a known element reference (e.g., 'Element:42') or CSS selector (e.g., '#button' or '.class'). Must NOT be a Playwright locator call
recordingIdstringrequired- The ID of the recording to analyze.
pointstring- Execution point, e.g. Point:1. Leave empty to pick point at end of recording.
replaymcp_listsourcesList the sources in the recording.Read-onlyListSources
List the sources in the recording.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
pathGlobstring- Optional glob pattern used to filter the returned sources by file path.
replaymcp_localstorageDescribe all the accesses made to localStorage.Read-onlyLocalStorage
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
keyFilterstring- Only show accesses whose key contains this substring (case-insensitive). Applies to both modes.
limitinteger- Pagination page size (default 25). Used in 'operations' mode.default
25 modestring- summary: keys grouped with access counts and final values (default). operations: paginated list of individual localStorage accesses.one of
summaryoperationsdefaultsummary offsetinteger- Pagination offset. Used in 'operations' mode.default
0
replaymcp_logpointEvaluates an expression at breakpoint hits for a given path and line number.Read-onlyLogpoint
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.
Inputs
expressionstringrequired- The expression to evaluate at each breakpoint hit.
linenumberrequired- The line number of the breakpoint.
pathstringrequired- The source file path of the breakpoint.
recordingIdstringrequired- The ID of the recording to analyze.
beginPointstring- The execution point at which to begin the search.
columnnumber- 0-based column number. If specified, the breakpoint will be at or after this column on the given line.
endPointstring- The execution point at which to end the search.
formatstring- Output format. 'json' returns structured data; 'markdown' (default) returns formatted text.one of
markdownjsondefaultmarkdown
replaymcp_networkrequestAnalyze network requests in the recording.Read-onlyNetworkRequest
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. Use 'inFlight' with a point (an error, a render, a click) to see which HTTP requests had not finished and which WebSocket messages had or had not arrived at that moment, for ordering and race bugs. RECOMMENDED workflow: summary → requests → detail. Call RecordingOverview first for broader context about the recording.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
endTimenumber- Only show requests that started at or before this time (ms).
formatstring- Output format. 'markdown' (default) for human-readable text. 'json' for structured data (summary/requests/inFlight modes only; detail mode always returns markdown).one of
markdownjsondefaultmarkdown limitinteger- Pagination page size (default 25). Used in 'requests' mode.default
25 modestring- 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). inFlight: HTTP requests still pending and WebSockets open at `point`, plus a timeline of network activity just before it.one of
summaryrequestsdetailinFlightdefaultsummary offsetinteger- Pagination offset. Used in 'requests' mode.default
0 pointstring- Execution point or point reference (e.g. 'Point:12'). Required for 'inFlight' mode.
requestIdstring- Request ID from the ID column of the 'requests' table. Preferred way to select a request in 'detail' mode; stable across filters.
requestIndexinteger- 0-based position in the 'requests' table. Only valid with the same filters used for that table; prefer requestId.
slowThresholdMsnumber- Duration threshold (ms) to consider a request slow. Default 2000.default
2000 startTimenumber- Only show requests that started at or after this time (ms).
urlFilterstring- Only show requests whose URL contains this substring.
windowMsnumber- How far before the point the 'inFlight' timeline reaches (ms). Default 1000.default
1000
replaymcp_playwrightstepsShow all steps taken by Playwright in the recording.Read-onlyPlaywrightSteps
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
collapseRetriesboolean- Group consecutive retry attempts (3+ identical apiName+params) into collapsed summaries (steps mode only). Defaults to true.default
true failedOnlyboolean- When true, only show failed steps (steps mode only)
lastinteger- Show only the last N steps (steps mode only)
limitinteger- Pagination page size (default 25, steps mode only)default
25 modestring- 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)one of
summarystepsstep-detailtest-sourcedefaultsummary offsetinteger- Pagination offset (steps mode only)default
0 stepNumberinteger- 1-based step number — required for 'step-detail' mode. If provided without a mode, automatically selects 'step-detail' mode.
testIndexinteger- 0-based test index — required for 'steps' and 'test-source' modes
replaymcp_profilegraphProfiles dependency graph entry execution between two points in a recording.Read-onlyProfileGraph
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
beginPointstring- The start execution point. Defaults to the beginning of the recording.
coverageFractionnumber- 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.
endPointstring- The end execution point. Defaults to the end of the recording.
replaymcp_profilesamplingProfiles the native C++ replay engine using stack sampling between two execution points.Read-onlyProfileSampling
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
beginPointstring- The start execution point. Defaults to the beginning of the recording.
endPointstring- The end execution point. Defaults to the end of the recording.
numProfilesnumber- Number of profiles to run and average. Defaults to 1.
profilingIntervalMsnumber- Sampling interval in milliseconds. Defaults to 20ms.
replaymcp_profilestatementsProfiles JS statement execution between two points in a recording.Read-onlyProfileStatements
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
beginPointstring- The start execution point. Defaults to the beginning of the recording.
coverageFractionnumber- 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.
endPointstring- The end execution point. Defaults to the end of the recording.
maxHitsnumber- Maximum number of breakpoint hits to scan. Defaults to 1000000.
replaymcp_reactcomponenttreeGet the structure of the committed/mounted React component tree at a point in time.Read-onlyReactComponentTree
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
componentstring- Component name or fiber reference (e.g. 'Button' or 'Component:42') to focus on. Required for subtree mode. Shows ancestors + subtree.
formatstring- Response format. 'markdown' (default) returns formatted text for LLM agents. 'json' returns structured JSON for programmatic callers.one of
markdownjsondefaultmarkdown hideFilterstring- Regex pattern — hide components matching this name and reparent their children up. Applied at tree construction time.
limitinteger- Pagination page size (default 50).default
50 maxDepthinteger- Max depth to expand. Nodes deeper than this are collapsed with descendant counts. In subtree mode, depth is relative to the focused component.
modestring- Analysis mode: summary (stats overview), tree (paginated hierarchy), subtree (focused view on a specific component)one of
summarytreesubtreedefaultsummary nameFilterstring- Show only components matching this name (case-insensitive substring). Ancestors of matches are auto-expanded for context. Tree mode only.
offsetinteger- Pagination offset into the visible (uncollapsed) tree.default
0 pointstring- The execution point at which to describe the React component tree. Defaults to the end of the recording.
replaymcp_reactexceptionDescribe any exceptions thrown which caused React to unmount.Read-onlyReactException
Describe any exceptions thrown which caused React to unmount. This finds React error boundary crashes and render-phase exceptions. The result always starts with an unmount status and an error boundary catch count. When neither is found but the console shows a React error, that error and its thrown stack are reported. For non-React uncaught exceptions, use UncaughtException instead. RecordingOverview includes an error summary — call that first for context.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
replaymcp_reactperformanceinsightsRun all deterministic React performance checks on a recording and return prioritized findings.Read-onlyReactPerformanceInsights
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
beginPointstring- Optional begin execution point for range filtering
beginTimenumber- Optional begin time (ms) for range filtering
categoriesarray- Run only specific check categories (default: all available)
componentFilterarray- Only include findings involving these components
endPointstring- Optional end execution point for range filtering
endTimenumber- Optional end time (ms) for range filtering
formatstring- Response format: 'markdown' (default) for human-readable output, 'json' for structured data (use only from programmatic callers)one of
markdownjsondefaultmarkdown includeSuppressedFindingsboolean- Also report findings dropped by same-commit deduplication or the maxFindings cap. Useful when applying your own prioritization policy or debugging check behavior.
maxFindingsnumber- Maximum findings to return (default: 30)
minSeveritystring- Minimum severity to include (default: info)one of
criticalwarninginfo
replaymcp_reactrendersAnalyze React renders in a recording.Read-onlyReactRenders
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
beginPointstring- Optional begin point for range filtering
beginTimenumber- Optional begin time (ms) for range filtering
commitIndexinteger- Commit index — required for 'commit', 'commit-fibers', and 'fiber-cause' modes
componentNamestring- Component name — required for 'component' and 'commit-fibers' modes
endPointstring- Optional end point for range filtering
endTimenumber- Optional end time (ms) for range filtering
fiberIdinteger- Fiber ID — required for 'fiber' and 'fiber-cause' modes
formatstring- Response format: 'markdown' (default) for human-readable output, 'json' for structured data (use only from programmatic callers)one of
markdownjsondefaultmarkdown includePropsboolean- 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.
limitinteger- Pagination page size (default 25)default
25 modestring- 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)one of
summarycommitscommitwaste-rankcomponentfibercommit-fibersfiber-causetrigger-detaildefaultsummary offsetinteger- Pagination offsetdefault
0
replaymcp_readsourceRead up to 50 lines of code centered around the given line and see what statements executed.Read-onlyReadSource
Read up to 50 lines of code centered around the given line and see what statements executed.
Inputs
pathstringrequired- The path of the source file within the recording.
recordingIdstringrequired- The ID of the recording to analyze.
columnnumber- 0-based column number. When provided with a line, the view will be centered on the breakpoint at or after this column.
linenumber- The line at which to center the code window.
replaymcp_recordingoverviewProvides a comprehensive overview of a recording: test results, errors, environment info, network activity, React render performance, and suggested next investigation steps.Read-onlyRecordingOverview
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
formatstring- Response format: 'markdown' (default) for human-readable output, 'json' for structured data (use only from programmatic callers)one of
markdownjsondefaultmarkdown
replaymcp_reduxactionsAnalyze Redux actions in a recording.Read-onlyReduxActions
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
actionIndexinteger- 0-based action index — required for 'action-detail' and 'impact' modes
actionTypestring- Filter by action type (case-insensitive substring match). Applies to 'actions' mode.
beginTimenumber- Optional begin time (ms) for range filtering
depthinteger- Max serialization depth for action-state mode (1–8, default 4). Use lower values for a quick overview, higher for detailed subtrees.
endTimenumber- Optional end time (ms) for range filtering
limitinteger- Pagination page size (default 25)default
25 modestring- 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-diffone of
summaryactionsaction-detailimpactaction-statestate-shapedefaultsummary offsetinteger- Pagination offsetdefault
0 pathstring- 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).
replaymcp_screenshotLists all screenshot timestamps in the recording, or fetches a screenshot at a given timestamp.Read-onlyScreenshot
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
base64boolean- Whether to return raw base64 image data instead of a screenshot URL.
elementstring- Either a known element reference (e.g., 'Element:42') or CSS selector (e.g., '#button' or '.class'). Crops screenshot to element bounds.
formatstring- Output format. 'markdown' (default) returns human-readable text. 'json' returns structured JSON. Ignored when base64=true.one of
markdownjsondefaultmarkdown timestampnumber- The screenshot timestamp to fetch. Omit to list all available timestamps.
replaymcp_searchsourcesSearch the sources in the recording and see which statements executed.Read-onlySearchSources
Search the sources in the recording and see which statements executed. By default, library code (node_modules, CDNs, vendor bundles) is skipped; set `includeGenerated: true` to search it. 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.
Inputs
patternstringrequired- Regex pattern to search for.
recordingIdstringrequired- The ID of the recording to analyze.
includeGeneratedboolean- Include generated/bundled sources and node_modules. Required for recordings without sourcemaps.
pathGlobstring- Path glob pattern.
replaymcp_tanstackqueriesAnalyze TanStack Query (React Query) cache events in a recording.Read-onlyTanStackQueries
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
depthinteger- Max serialization depth for query-state mode (1–8, default 3). Use lower values for a quick overview, higher for detailed data.
eventIndexinteger- 0-based index of event within the query's event list — required for query-state mode
eventTypestring- Filter by event type (e.g. "updated", "added", "observerAdded")
limitinteger- Pagination page size (default 25)default
25 modestring- 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)one of
summaryquery-eventsquery-timelinequery-statedefaultsummary offsetinteger- Pagination offsetdefault
0 queryHashstring- Query hash string — required for query-events and query-state modes
replaymcp_uncaughtexceptionDescribe uncaught exceptions and unhandled promise rejections (runtime errors not caught by try/catch).Read-onlyUncaughtException
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. When every frame is library code, it gives the error text and the thrown stack instead; when the recording has no matching throw (e.g. script syntax errors), just the error text. For React-specific exceptions that unmounted the app, use ReactException instead. RecordingOverview includes an error summary — call that first for context.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
replaymcp_userinteractionsShow all user interactions (clicks and key presses) in the recording.Read-onlyUserInteractions
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
formatstring- Output format. 'markdown' (default) for human-readable Markdown. 'json' for structured JSON data.one of
markdownjsondefaultmarkdown limitinteger- Pagination page size (default 25). Used in 'interactions' mode.default
25 modestring- summary: interaction counts by type, time range (default). interactions: paginated chronological list of all interactions.one of
summaryinteractionsdefaultsummary offsetinteger- Pagination offset. Used in 'interactions' mode.default
0 typestring- Filter by interaction type. 'click' for mouse clicks, 'keypress' for key presses, 'all' for both.one of
clickkeypressalldefaultall
replaymcp_warmrecordingStarts processing a recording if needed and reports its status.Read-onlyWarmRecording
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
expectLibraryInstrumentationboolean- 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.
untilstring- 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.one of
readyscanned waitSecondsnumber- How long to wait for processing to finish before returning the current status. Defaults to 60, capped at 60. Use 0 to return immediately.
replaymcp_websocketmessagesInspect the WebSocket connections in a recording and the messages sent and received on them.Read-onlyWebSocketMessages
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
connectionIdstring- Connection ID from connections mode, e.g. "ws1". connection mode only.
directionstring- Only show messages sent by the page or received from the server. connection mode only.one of
sentreceived filterByTextstring- Substring filter (case-insensitive) on message text. connection mode only.
formatstring- Response format: 'markdown' (default) for human-readable output, 'json' for structured data (use only from programmatic callers)one of
markdownjsondefaultmarkdown limitinteger- Page size for connection mode (default 25).default
25 messageIdstring- Message ID from connection mode, e.g. "m12". Required for message mode.
modestring- 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.one of
connectionsconnectionmessagedefaultconnections offsetinteger- 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.default
0 pathstring- 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.
urlFilterstring- Substring filter (case-insensitive) on the connection URL. connections mode only.
replaymcp_zustandstoresAnalyze Zustand stores in a recording.Read-onlyZustandStores
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.
Inputs
recordingIdstringrequired- The ID of the recording to analyze.
depthinteger- Max serialization depth for state inspection (1–8, default 3). Use lower values for a quick overview, higher for detailed subtrees.
eventIndexinteger- 0-based index of the setState event within the store — required for 'store-state' mode. Get event indices from 'store-events' mode.
limitinteger- Pagination page size (default 25) — applies to 'store-events' modedefault
25 modestring- 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)one of
summarystore-eventsstore-statedefaultsummary offsetinteger- Pagination offset — applies to 'store-events' modedefault
0 storeIdinteger- Store ID — required for 'store-events' and 'store-state' modes. Get available IDs from the 'summary' mode.
No tools match.