Break on XHR

Sets a URL-substring breakpoint for a future XHR/Fetch when runtime request arguments, local variables, or payload construction must be inspected. For an already captured request, call get_request_initiator first because it is non-pausing; use this only when that evidence is insufficient. Set it before reproducing the user action—it does not inspect past traffic—then call get_paused_info/evaluate_script and finally step or resume. The URL pattern identifies this breakpoint for list_breakpoints and remove_breakpoint(action="remove_xhr").

Case-sensitive URL substring matched against future XHR/Fetch requests. Prefer a narrow endpoint path from list_network_requests; retain the exact string to remove the breakpoint later.

Machine-readable result payload.

Stable error code.

Whether the tool completed successfully.

Concise human-readable outcome.

Stable MCP tool name.

Clear Network Requests

Discard captured HTTP(S) evidence for the currently selected page after confirm=true. Use this immediately before reproducing an action when a clean network capture window is needed; do not use it to reset login, cookies, cache, or other browser state. It irreversibly clears the in-memory request queue, cached response bodies, and initiator maps only. Browser cookies, HTTP cache, origin storage, console messages, and WebSocket connections/messages are unchanged; use clear_site_data for cookie and storage reset. New captures continue above the previous reqid high-water mark because reqids are never reused.

Must be true to irreversibly delete the selected page's captured request history, response-body cache, and initiator evidence. This confirms capture cleanup, not browser-state cleanup.

Machine-readable result payload.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Clear Site Data

Irreversibly clear browser state after confirm=true to create a clean replay environment for the selected page. Use this before replaying login, session creation, storage initialization, or other state-dependent flows; do not use it to inspect cookies or determine which response set one. For cookie provenance, including HttpOnly, Secure, and SameSite attributes, use list_network_requests with cookieName first. Cleanup covers cookies affecting the selected page's HTTP(S) frames—including HttpOnly and Secure cookies through the browser context—persistent storage for those frame origins, and each HTTP(S) frame's sessionStorage. It does not reload the page. The browser HTTP cache is global and is preserved by default; set clearBrowserCache=true only when that wider cross-page effect is explicitly intended.

Also clear the browser-wide HTTP cache. Leave false for site-scoped replay cleanup. Setting true has a wider global effect on every page and origin in this browser, not only the selected page or its frame origins.

Must be true to irreversibly delete cookies affecting the selected page's HTTP(S) frames, persistent storage for those frame origins, and HTTP(S) frame sessionStorage. This confirms state reset for replay, not inspection.

Machine-readable result payload.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Click Element

Performs one verified, auditable click in the currently selected frame. Use it when the task requires activating a known button, link, or control after selecting the correct page/frame and identifying a CSS selector; it is the preferred minimal interaction primitive over arbitrary evaluate_script code. It does not discover elements, type text, or silently guess among matches: the selector must resolve to exactly one element unless index is explicit, and the chosen element must be visible. A click can submit data, navigate, or trigger external effects, so confirm=true is required and the result reports the exact resolved element.

Mouse button. Defaults to left.

Must be true to authorize this specific click because it can submit data, navigate, or trigger external side effects.

Explicit zero-based match index. Required when the selector matches more than one element.

Optional keyboard modifiers held during the click.

CSS selector evaluated only in the currently selected frame. Use select_frame first when the target is inside an iframe.

Maximum wait time in milliseconds. If set to 0, the default timeout will be used.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Evaluate Script

Evaluates one focused JavaScript function for DOM/page state, web storage, page-defined globals, a paused-frame expression, or browser-side processing of one local file. Use it when those runtime values are the goal and no narrower evidence tool applies. Do not use document.cookie or page evaluation to investigate HttpOnly/Secure cookies, Set-Cookie provenance, or captured HTTP evidence; use list_network_requests with cookieName/reqid, and use search_in_sources/get_script_source for source discovery. While running, evaluation uses the selected frame's isolated world by default or its page main world with mainWorld=true; while paused, it always uses the chosen call frame and ignores mainWorld. Call get_paused_info before paused evaluation, then step or resume when finished. Arbitrary code can change page/external state and requires confirm=true; inline results are bounded, so use outputFile for exact large or binary results.

Must be true to authorize this exact arbitrary-code evaluation, which may mutate page state, send requests, or cause external side effects. Prefer a read-only expression when inspection is sufficient.

Set true only to authorize replacing an existing outputFile. A new file does not require overwrite confirmation.

Paused mode only: zero-based call frame from get_paused_info (default: top frame). The index and its callFrameId expire after any step or resume.

JavaScript function declaration invoked by the tool, for example `() => document.title` or `async () => await Promise.resolve(location.href)`. Return JSON-serializable data; ArrayBuffer/typed arrays require outputFile for exact bytes. With localFilePath, accept `async ({localFile}) => ...` and read localFile.text for UTF-8 or localFile.base64 for exact bytes. Keep the function focused; use mainWorld=true only when page-defined globals are required.

Absolute path to one host file passed as localFile; the browser never reads the path directly. Relative paths, file:// URLs, globs, ~, and directories are rejected, access is subject to --allowedRoots, and file contents may expose sensitive host data.

Running-page mode only: false uses the selected frame's isolated context; true uses that frame's page main world to access application-defined globals. When execution is paused, evaluation always targets frameIndex and this option is ignored.

Save the exact result locally instead of returning bounded inline content. JSON-serializable values are written as JSON text and ArrayBuffer/typed arrays as raw bytes; the returned filename is resolved and subject to --allowedRoots.

Stable error code.

Whether the tool completed successfully.

Concise human-readable outcome.

Stable MCP tool name.

Get Paused Info

Inspects the current call stack, source locations, and selected call-frame scopes after a code/XHR breakpoint or explicit pause has stopped execution. It neither creates a pause nor resumes one. Returned frameIndex values and callFrameIds belong only to the current pause and expire after any step or resume; use evaluate_script with frameIndex for a focused expression, then step or pause_or_resume(action="resume").

Zero-based frame from this pause whose scopes should be read (default: top frame). Frame indices change after a step and expire on resume.

Include bounded variables from the selected call frame (default: true). Set false when only the stack and source locations are needed.

Scope categories to include for frameIndex (default: 2): 1 reads arguments/locals, 2 also reads closures, and 3+ includes other non-global scopes. Increase only when the needed value is absent.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Get Request Initiator

Non-pausing first action for tracing which JavaScript initiated a retained HTTP request when CDP initiator evidence was active. Pass the reqid from list_network_requests; because initiator capture starts lazily and is not retroactive, an older request may have no stack—in that case reproduce the action and inspect the new reqid, or set break_on_xhr before reproduction when runtime values are required. If the captured stack identifies the code, inspect its URL/location with get_script_source. If arguments, locals, or a dynamically built payload are still needed, use break_on_xhr, reproduce, then call get_paused_info or evaluate_script before stepping or resuming. This tool only reads retained evidence and does not pause or reproduce the request.

Numeric reqid returned by list_network_requests, not a raw CDP request ID. It survives navigation while retained, but becomes stale after FIFO eviction or clear_network_requests; list requests again if needed.

Machine-readable result payload.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Get Script Source

Reads a small source region around a search match, paused location, or known statement without executing or pausing the page. Select by URL when available because URL-backed scripts can be resolved again after navigation; use the debugger-context-scoped scriptId only for current inline/eval scripts. Use line ranges for normal source and offset/length for minified single-line bundles. For a whole, minified, or WASM source, use save_script_source; to observe runtime values next, call set_breakpoint_on_text against the original loaded source.

Inclusive 1-based end line for a bounded multi-line snippet. Omit both line bounds and use offset/length for a minified single-line bundle.

Maximum characters to return from offset (default: 1000). This is ignored unless offset is provided.

Zero-based character offset into the original source. Use for a bounded read of minified single-line code when line ranges would be too large.

Debugger-context-scoped script ID from list_scripts, search_in_sources, or paused information. Required for unnamed inline/eval scripts, but invalid after reload, navigation, or debugger target/frame change; prefer url for external scripts.

Inclusive 1-based start line, typically copied from search_in_sources or paused information. Use with endLine for normal multi-line source.

URL from list_scripts, search_in_sources, or a call stack. Preferred stable selector for URL-backed scripts; resolution tries an exact match before a substring match, so provide enough of the URL to avoid ambiguity.

Machine-readable result payload.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Inspect WebSocket Messages

Inspect captured bidirectional WebSocket connections and frame payloads for the selected page. Use this for WebSocket, socket, live-update, push, streaming, or realtime message flows; use list_network_requests for ordinary HTTP/XHR/fetch traffic and WebSocket upgrade request headers. WebSocket capture starts lazily on this tool's first use and is not retroactive: if the relevant socket already connected or exchanged frames, call this tool once to initialize capture, then reload or reproduce the flow. Without wsid it lists connections so you can choose one. With wsid it lists paginated sent/received frames; add show_content=true for payload previews. With wsid and analyze=true it groups frames by payload pattern and returns group IDs and sample frame indices; then use groupId to inspect one pattern. With wsid and frameIndex it returns one retained frame's detailed payload using the stable index shown in frame tables or analysis samples.

With wsid, group retained frames by payload pattern/fingerprint. Use this to discover message types in noisy realtime traffic; it returns traffic statistics, group IDs, and sample stable frame indices. Follow with groupId or frameIndex for focused inspection.

With wsid, restrict frame-list, analysis, or group results to frames "sent" by the page or "received" from the server. It does not filter connection-list mode.

With wsid, return one retained frame and its payload by stable frame index. This is the Idx shown in frame tables or analyze=true samples, not a page-relative array offset. Indices are monotonic and may begin above 0 after older frames are evicted.

With wsid, list only frames from a pattern group such as A, B, or C. Run analyze=true first to discover group IDs. If analysis used direction, repeat the same direction because grouping is computed over that filtered frame set.

In connection-list mode only (without wsid), include connections preserved from the last three navigations. Use this when the relevant socket belonged to a previous page state.

Zero-based page for the active connection-list, frame-list, group-list, or analysis-group mode. Omit it for the first page.

Items per page: connections when wsid is omitted, frames in normal/group mode, or pattern groups when analyze=true. Defaults to 10.

With wsid in normal or group frame-list mode, include payload previews up to 10,000 characters for frames on the current page. Leave false for compact metadata, or use frameIndex when one exact frame needs detailed inspection.

In connection-list mode only (without wsid), return WebSocket URLs containing this substring. Use it to narrow by host, path, or query text.

Select a WebSocket connection by the wsid returned from connection-list mode. Omit it to list captured connections before inspecting their frames.

pageIdx pageSize totalItems totalPages hasNextPage

Stable error code.

Whether the tool completed successfully.

Concise human-readable outcome.

Stable MCP tool name.

List Breakpoints

Inspects code and XHR/Fetch breakpoints managed by this MCP session before reproducing an action or cleaning up debugger state. Returns current code breakpointIds and the exact XHR URL patterns needed by remove_breakpoint; URL-backed definitions are restored after navigation when possible, but a rebuilt debugger session may assign new IDs. This does not show why or where execution is currently paused—use get_paused_info for the active call stack.

Page number (0-based). Defaults to 0.

Maximum items per page. Defaults to 20.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

List Console Messages

Inspects console messages and uncaught page errors captured for the selected page. Use it to diagnose runtime failures, warnings, application logs, or values already emitted by page code; use search_in_sources for source text and list_network_requests for HTTP evidence instead. Without msgid it lists messages 20 per page by default, optionally filtered by type or retained navigation history. With msgid it returns one message by its stable ID for focused inspection. Capture begins when this MCP attaches and is not retroactive, so reload or reproduce code that logged before attachment.

Include retained console messages from the last 3 navigations. Leave false when only the current page load is relevant.

Stable message ID returned by list mode. Pass it to inspect one captured console message; omit it to list messages.

Page number to return (0-based). When omitted, returns the first page.

Maximum number of messages to return. Defaults to 20.

Console levels/types to include in list mode, such as error, warn, log, or trace. Values are OR-ed; omit or pass an empty array for all types.

log debug info error warn dir dirxml table trace clear startGroup startGroupCollapsed endGroup assert profile profileEnd count timeEnd verbose

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Inspect Network Requests

Inspect captured HTTP(S) traffic for the currently selected page. Use this for API calls, request or response headers and bodies, redirects, authentication/session flows, replay or signing inputs, and determining which response created, refreshed, rotated, overwritten, or deleted a cookie. Without reqid it lists and filters requests; with cookieName it traces exact response Set-Cookie updates oldest-first, including cookies with HttpOnly, Secure, or SameSite attributes that page JavaScript cannot fully inspect; with reqid it returns bounded request details; with reqid plus outputFile it exports exact data. To inspect complete Set-Cookie values and attributes, export outputPart="responseHeaders" for a reqid returned by cookieName mode. cookieName never searches outbound Cookie request headers. Use get_websocket_messages for WebSocket frame payloads; this tool only represents the HTTP upgrade request. Capture begins when this MCP attaches and is not retroactive, so reload or reproduce traffic that occurred earlier. Captures then survive navigation in a 5000-request FIFO queue. List and cookie-flow modes default to 20 items per page; filters combine with AND and multiple values inside one filter combine with OR.

Must be true when outputFile already exists. New files do not require confirmation.

Trace an exact cookie name in response Set-Cookie headers. Use this when asked where, when, or by which response a cookie was created, refreshed, rotated, overwritten, or deleted, including HttpOnly cookies and cookies carrying Secure or SameSite attributes. Matching setter responses are returned oldest-first with reqids and use pageSize/pageIdx. Export outputPart="responseHeaders" for a returned reqid to inspect the complete value and Path, Domain, HttpOnly, Secure, SameSite, Expires, or Max-Age attributes. This mode does not search outbound Cookie request headers.

Filter requests by HTTP method (the request verb). Matched case-insensitively. Pass one or more of GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS; multiple values are OR-ed (e.g. ["POST"] shows only POSTs, ["GET","POST"] shows both). Use this to hunt for submissions (POST/PUT/PATCH) versus reads (GET). This is the HTTP verb, distinct from resourceTypes which filters by resource category (xhr, document, ...). When omitted or empty, methods are not filtered.

With reqid, save selected network data to a local file. Use export instead of bounded inline details for complete Set-Cookie headers, exact bytes, large or binary bodies, long query payloads, replay/signature inputs, or external decoding. Absolute paths and paths relative to the current working directory are supported. The response reports the resolved absolute path; use it with evaluate_script localFilePath for browser-side processing. Subject to --allowedRoots when configured.

Select what outputFile receives for the chosen reqid. Use "responseHeaders" for complete cookie attributes and repeated Set-Cookie headers, "responseBody" for raw response bytes, "requestBody" for captured request bytes, "queryParams" for parsed URL parameters, or "all" for a JSON bundle of metadata, headers, query parameters, and body content/metadata. Defaults to "all".

all responseHeaders responseBody requestBody queryParams

Zero-based page to return in request-list or cookie-flow mode. Omit it for the first page.

Maximum requests or Set-Cookie updates per page in list or cookie-flow mode. Defaults to 20.

Inspect one captured request by the reqid returned by request-list or cookie-flow mode. Omit it to list/filter requests or trace cookie setters. Add outputFile when exact, complete, or large data is needed.

Filter requests to only return requests of the specified resource types (xhr, fetch, document, script, ...). This is the resource category, NOT the HTTP verb — use methods for GET/POST filtering. When omitted or empty, returns all requests.

document stylesheet image media font script texttrack xhr fetch prefetch eventsource websocket manifest signedexchange ping cspviolationreport preflight other

Filter request-list results to URLs containing this substring. Use an endpoint path, host, query fragment, or other known URL text; combine with methods/resourceTypes to narrow an API flow.

Stable error code.

Whether the tool completed successfully.

Concise human-readable outcome.

Stable MCP tool name.

List Scripts

Discovers JavaScript currently loaded in the selected debugger context—the main frame by default, or the frame chosen with select_frame. Use select_frame first for iframe-specific source/debugger work. Includes external, inline, and eval scripts in that context; if you already know a function name, endpoint, or code literal, use search_in_sources instead. Each result includes a context-scoped scriptId that expires on reload, navigation, or debugger target change and, for external scripts, a URL that is the preferred selector for get_script_source or save_script_source.

Case-insensitive URL substring used to narrow external scripts. It does not search source text or match unnamed inline/eval scripts; use search_in_sources for code-content queries.

Page number (0-based). Defaults to 0.

Maximum items per page. Defaults to 20.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Navigate Page

Navigates, reloads, or moves through history in the currently selected page. Use it to reproduce requests, trigger configured breakpoints, refresh scripts, or continue a workflow in the same tab; use new_page when a separate tab is required. It does not clear cookies, storage, cache, or site data, so call clear_site_data first only when a clean replay is intended. It waits for DOMContentLoaded rather than every background resource; if a breakpoint pauses loading, use get_paused_info and then pause_or_resume(action="resume"). Navigation invalidates old script IDs, while tracked URL and XHR/Fetch breakpoints are restored when possible.

Maximum wait time in milliseconds. If set to 0, the default timeout will be used.

Navigation action for the selected page: url, back, forward, or reload. Use type=url together with url; omit type only when url is provided.

Target URL for type=url. Do not pass it for back, forward, or reload.

Machine-readable result payload.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

New Page

Opens a separate browser page for a URL, reusing an existing about:blank startup tab when available. Use this when the task needs another tab or should preserve the currently selected page; use navigate_page to change the URL in the existing selected page instead. It waits for DOMContentLoaded, not every background resource, and then makes the opened page the target for later tools. It preserves cookies, storage, cache, and other browser state; use clear_site_data separately when a clean replay is required.

Absolute URL to load in a separate or reusable blank page. Use navigate_page instead when the current selected page should be reused.

Machine-readable result payload.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Pause / Resume

Explicitly requests an immediate pause or resumes an existing paused execution; it never toggles implicitly. Use a code breakpoint or break_on_xhr instead when a specific statement/request should stop, and use get_paused_info before resuming if evidence must be collected. Resuming invalidates current callFrameIds and frame indices.

Use "pause" only while running, or "resume" only after a breakpoint/manual pause. Resume after get_paused_info/evaluate_script/step inspection is complete.

Machine-readable result payload.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Remove Breakpoint

Removes a known code breakpoint, XHR/Fetch breakpoint, or every MCP-managed breakpoint after explicit confirmation. Use breakpointId from set_breakpoint_on_text/list_breakpoints for remove_code, or reuse the exact URL pattern from break_on_xhr/list_breakpoints for remove_xhr. Removal does not resume an already paused page; call pause_or_resume(action="resume") separately after inspection.

Required removal mode: remove_code needs breakpointId, remove_xhr needs url, and remove_all removes both kinds.

Current breakpoint ID returned by set_breakpoint_on_text or list_breakpoints. Used only with action="remove_code"; list again after a debugger/page-session rebuild because restoration may assign a new ID.

Must be true to authorize the selected removal action. This does not authorize or trigger resuming execution.

Exact URL substring pattern previously passed to break_on_xhr or returned by list_breakpoints. Used only with action="remove_xhr".

Machine-readable result payload.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Save Script Source

Saves one complete JavaScript or WASM source for local inspection when an inline snippet is insufficient, especially for large or minified bundles. Prefer get_script_source for a small known region and search_in_sources to locate text across loaded scripts first. With format=true, destinations using a supported JavaScript/TypeScript extension are formatted by default; other extensions preserve raw source, and formatted line numbers may differ from the live page. Use distinctive text plus the original URL with set_breakpoint_on_text for runtime debugging. The returned filename is the resolved local path, while scriptId remains scoped to the current debugger context.

Set true only to authorize replacing an existing filePath. A new file does not require overwrite confirmation.

Destination path for the complete source, absolute or relative to the server working directory and subject to --allowedRoots. A JavaScript/TypeScript extension enables formatting; use .wasm for bytecode or another extension to preserve raw text.

Format supported JavaScript/TypeScript extensions for readability (default: true). Set false when exact source bytes or original line layout matter; formatted line numbers cannot be used as live breakpoint locations.

Debugger-context-scoped script ID from list_scripts or search_in_sources. Use for unnamed inline/eval scripts; it becomes invalid after reload, navigation, or debugger target/frame change.

URL from list_scripts, search_in_sources, or a call stack. Preferred over scriptId because it can be resolved again after navigation; exact match is tried before substring match.

Machine-readable result payload.

Stable error code.

Whether the tool completed successfully.

Concise human-readable outcome.

Stable MCP tool name.

Search in Sources

Finds a known function name, endpoint, string literal, token, or code pattern in JavaScript loaded by the selected debugger context—the main frame by default, or the frame chosen with select_frame. It searches external, inline/eval, and minified sources in that context without executing or pausing the page, returning 1-based lines plus context-scoped scriptIds; URLs are the preferred selectors for URL-backed matches. Use select_frame first for iframe-specific source work, get_script_source for nearby context, save_script_source for a whole bundle, or set_breakpoint_on_text when runtime values are needed. For a known captured request, prefer get_request_initiator before a broad source search.

Match case exactly when true. Leave false for discovery; set true when choosing exact code text for a breakpoint.

Skip sources with very long lines when true. Keep the default false for reverse engineering because relevant code often exists only in compressed bundles.

Interpret query as a regular expression when true. Leave false for literal endpoint, token, and code-text searches.

Maximum characters in each matched-line preview (default: 150). Use get_script_source rather than a very large preview when surrounding context is needed.

Maximum matches to return (default: 30). Narrow with urlFilter before increasing this for common text.

Source text to locate, or a regular-expression pattern when isRegex=true. Prefer a distinctive function name, endpoint, property, or literal that can also anchor set_breakpoint_on_text.

Case-insensitive script-URL substring used to narrow matches to a known bundle or domain. It excludes unnamed inline/eval scripts.

scriptId url kind lineNumber lineContent

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Select Frame

Lists or selects frames, including iframes, within the current page. Use it when the target element, page-defined global, script, or execution context may live in an iframe: first list frames, then pass frameIdx before click_element or evaluate_script. Omitting frameIdx lists 20 frames per page without changing context; passing frameIdx changes the shared frame target, with 0 restoring the main frame. It does not switch browser tabs or navigate—use select_page or navigate_page for those actions—and listPageIdx only paginates this listing.

Frame index from the latest frame listing. Pass it to target later frame-aware tools; 0 restores the main frame. Omit it to list frames without changing context, and re-list after navigation or frame attachment/detachment because indices can shift.

Zero-based pagination index for the frame listing only. This is not the frameIdx used to select a frame. Defaults to 0.

Maximum frames to list per response. Defaults to 20.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Select Page

Lists or selects open browser pages. Use it without pageIdx to identify the active page or choose the correct tab before inspecting network traffic, scripts, frames, or console output; pass pageIdx to make one listed page the shared target for later tools. It does not navigate or create pages: use navigate_page to change the selected page's URL and new_page when a separate tab is required. listPageIdx only paginates the page listing and never changes selection.

Zero-based pagination index for the page listing only. This is not the pageIdx used to select a browser page. Defaults to 0.

Snapshot index from the latest page listing. Pass it to make that page the target for later tools; omit it to list pages without changing selection. Re-list after pages open or close because indices can shift.

Maximum pages to list per response. Defaults to 20.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Set Breakpoint on Text

Sets a restorable URL-backed breakpoint when distinctive code text is known and its runtime values must be observed. Call it directly when the user already supplies precise text plus any URL/occurrence disambiguation; use search_in_sources/get_script_source first only when the location is unknown or ambiguous. For an API with no known code location, start with list_network_requests and get_request_initiator or use break_on_xhr. On a hit, call get_paused_info, optionally evaluate_script, then step or resume. Returns the current breakpointId for remove_breakpoint; list breakpoints again after a rebuilt debugger session, and note that unnamed inline/eval scripts cannot use this URL breakpoint.

Optional simple synchronous expression evaluated in the future call frame; the breakpoint pauses only when it is true. Use it to reduce repeated hits after the location is precise, never for async work, complex discovery, or side effects.

One-based occurrence among matching loaded-source results (default: 1). Use only after reviewing multiple search matches; urlFilter is usually the more stable disambiguator.

Exact case-sensitive source text used to locate the breakpoint, such as a distinctive function declaration, call, or statement. Prefer a snippet confirmed by search_in_sources and avoid common tokens.

Case-insensitive URL substring that limits candidate scripts. Use the URL from search_in_sources/get_script_source to avoid the same text in unrelated bundles.

Machine-readable result payload.

Stable error code.

Whether the tool completed successfully.

Concise human-readable outcome.

Stable MCP tool name.

step

Step

Advances JavaScript execution by one debugger operation from an existing pause and returns the next stopped call frame with concise source context. Use after get_paused_info or evaluate_script when control flow still needs tracing; it cannot start from running execution. Each advance invalidates prior callFrameIds, so inspect the new pause again as needed, then use pause_or_resume(action="resume") to finish.

Choose "over" for the next statement without entering calls, "into" to follow a call, or "out" to continue until the current function returns.

Machine-readable result payload.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.

Take Screenshot

Captures the visual state of the currently selected page. Use it to verify page layout, visible UI state, selector targets, in-page dialogs/modals, or the effect of a navigation/click; it is not a substitute for DOM values, network evidence, or script inspection. By default it returns the visible viewport, while fullPage=true captures the whole document; oversized captures may be saved as a temporary artifact instead of attached. Pass filePath for a reusable local artifact; existing files require confirmOverwrite=true and remain subject to --allowedRoots.

Must be true when filePath already exists. New files do not require confirmation.

Optional absolute or working-directory-relative path for a reusable screenshot artifact. Omit it to attach the image directly. Subject to --allowedRoots when configured.

Image format for the attachment or saved file. Defaults to png; use jpeg when smaller lossy output is preferred.

Capture the entire scrollable document when true; leave false or omit it for the currently visible viewport.

Compression quality for JPEG format (0-100). Higher values mean better quality but larger file sizes. Ignored for PNG format.

Machine-readable result payload.

Stable error code.

Concise human-readable outcome.

Stable MCP tool name.


deepseek

Alias of delegate (kept for v2 compatibility). Delegate heavy, token-intensive tasks from Claude Code to a cheaper model (DeepSeek, Kimi, GLM, Qwen, Grok, or any configured OpenAI-compatible provider). Use when: analyzing large files (>300 lines), multi-file codebase reviews, generating outputs >200 lines, complex reasoning, math, architecture design, or anytime your response would exceed ~4000 tokens. Claude orchestrates; the delegate does the heavy lifting. Pass `task` (read/write/reason) so routing picks the right model.

Absolute file paths to read and include in the prompt. The MCP server reads them directly — file contents never pass through Claude's context window. Use this instead of reading files with Read/ctx_read and embedding them in prompt.

Override the routed model. A bare model id (e.g. "deepseek-v4-flash") or "provider:model" for cross-provider (e.g. "openrouter:moonshotai/kimi-k2.5"). Prefer `task` and let routing decide.

The full task/prompt to send to the delegated model. Be thorough and specific.

Override the active provider by id (e.g. "moonshot"). Rarely needed.

Stream the response as incremental chunks instead of buffering the full output. Recommended for large outputs (>50K tokens) to reduce memory pressure. Default: false

Optional system prompt to set context/behavior

What kind of work this is, so routing picks the right model: "read" = summarize/analyze/extract from large inputs; "write" = generate code or docs; "reason" = math, logic, architecture decisions. Omit to use the default model.

Temperature (0-2). Lower = more deterministic. Default: 0.3

Alias of delegate_models (kept for v2 compatibility).

delegate

The full task/prompt to send to the delegated model. Be thorough and specific.

List the configured providers and their models with context windows, output limits, and pricing


Delegate complex, multi-step, or specialized tasks to an autonomous agent for independent execution with dedicated context (e.g., refactoring across multiple files, fixing all test failures, systematic codebase analysis, batch operations). Returns session_id in response metadata - reuse it in subsequent calls to maintain conversation context continuity across multiple agent executions.

Agent name exactly as listed in list_agents resource.

Working directory path for agent execution context. Must be an absolute path to a valid directory.

Additional configuration parameters for agent execution (optional)

User's direct request content. Agent context is separately provided via agent parameter.

Session ID for continuing previous conversation context (optional). If omitted, a new session will be auto-generated and returned in response metadata. Reuse the returned session_id in subsequent calls to maintain context continuity.


Analyze the impact of deleting or modifying a saved object (what will be affected)

Saved object ID to analyze

Kibana space (optional)

Saved object type (e.g., visualization, lens, index-pattern)

Analyze dependency tree for a Kibana saved object (Dashboard, Visualization, etc.)

Saved object ID

Maximum depth to traverse (default: 5)

Kibana space (optional)

Saved object type (e.g., dashboard, visualization, lens, index-pattern)

Perform health check on a Dashboard to detect broken references, performance issues, etc.

Also check if referenced Elasticsearch indices exist (requires additional permissions)

Dashboard ID to check

Kibana space (optional)

Execute a custom API request for Kibana with multi-space support

Set to true to bypass token limits in critical situations. Use sparingly to avoid context overflow.

Target Kibana space (optional, defaults to configured space)

Get all available Kibana spaces with current context

Include detailed space information (name, description, etc.)

Get details for a specific Kibana API endpoint

HTTP method, e.g. GET, POST, PUT, DELETE

API path, e.g. /api/actions/connector_types

If true, return raw JSON schema instead of simplified TypeScript interface

Get Kibana server status with multi-space support

List all Kibana API endpoints as a resource list

Scan health status of all Dashboards in a space (returns summary report)

Maximum number of dashboards to scan (default: 50)

Kibana space (optional)

Search Kibana API endpoints by keyword

Search keyword for filtering API endpoints

Bulk delete multiple Kibana saved objects by type and ID. This is a destructive operation that permanently removes saved objects (dashboard, visualization, index-pattern, search, config, lens, map, tag, canvas-workpad, canvas-element, etc.). WARNING: Deleted objects cannot be recovered. Use with caution. IMPORTANT: Objects that exist in multiple namespaces require the 'force' parameter to be deleted.

Force deletion of objects that exist in multiple namespaces. Set to true if you get an error about objects existing in multiple namespaces. WARNING: This also deletes legacy URL aliases and can place heavy load on Kibana. Default: false.

REQUIRED: Array of objects to delete. Each object must have 'type' and 'id' fields. Minimum 1 object required.

REQUIRED: The saved object ID. This is the unique identifier for the specific object you want to delete.

REQUIRED: The saved object type. Common types: 'dashboard', 'visualization', 'index-pattern', 'search', 'config', 'lens', 'map', 'tag', 'canvas-workpad', 'canvas-element'. Supports multiple formats: single string 'dashboard', array ['dashboard'], JSON string '["dashboard"]', or comma-separated 'dashboard,visualization' (will use first type for single object deletion).

Update multiple Kibana saved objects in a single operation. Each object can be of different types and will be partially updated (only specified attributes changed). Supports all saved object types (dashboard, visualization, index-pattern, search, config, lens, map, tag, canvas-workpad, canvas-element, etc.). PERFORMANCE: More efficient than multiple single updates. Each object can have individual version control.

REQUIRED: Array of objects to update. Each object must have 'type', 'id', and 'attributes' fields. Minimum 1 object required.

REQUIRED: The saved object ID. This is the unique identifier for the object you want to update.

OPTIONAL: Specific namespace for this object (overrides space parameter).

OPTIONAL: Array of references to other saved objects for this specific object.

ID of the referenced object

Reference name used in the object

Type of the referenced object

REQUIRED: The saved object type. Common types: 'dashboard', 'visualization', 'index-pattern', 'search', 'config', 'lens', 'map', 'tag', 'canvas-workpad', 'canvas-element'. Supports multiple formats but will use first type.

OPTIONAL: Version string for optimistic concurrency control for this specific object.

Create a new Kibana saved object (dashboard, visualization, index-pattern, search, config, lens, map, tag, canvas-workpad, canvas-element, etc.). This is a universal tool that can create any type of saved object by specifying the type and attributes. Each object type has specific attribute requirements. IMPORTANT: The 'title' field is required for most object types. Complex fields like panelsJSON, visState should be JSON strings.

REQUIRED: Object containing the saved object attributes. Structure varies by type. Common fields: 'title' (required for most types), 'description'. Dashboard: 'panelsJSON', 'timeRestore'. Visualization: 'visState', 'uiStateJSON'. Index-pattern: 'timeFieldName'. All JSON fields should be strings.

OPTIONAL: Specific ID for the saved object. If not provided, Kibana will auto-generate a unique ID. Use this when you need a predictable ID or when recreating objects. RETRY SAFETY: if this call is retried after a timeout or dropped response without an id, Kibana creates a SECOND object with a new auto-generated id -- there is no way to detect that after the fact. Kibana's own POST-with-id endpoint (used when id is set) already rejects a duplicate create with a 409 unless overwrite is also true, so passing a stable, caller-chosen id here is what makes a retry safe. Do not derive it from the object's attributes alone (e.g. title) -- two different legitimate objects can share the same title, and colliding them would silently discard one.

OPTIONAL: Array of initial namespaces for the object. Used for multi-tenant setups. If not specified, object will be created in the default namespace.

OPTIONAL: Whether to overwrite an existing object with the same ID. Only relevant when 'id' is specified. Default: false. Set to true to replace existing objects.

OPTIONAL: Array of references to other saved objects. Used to link objects together (e.g., dashboard panels referencing visualizations). Each reference needs id, type, and name.

ID of the referenced object

Reference name used in the object

Type of the referenced object

REQUIRED: The saved object type. Common types: 'dashboard', 'visualization', 'index-pattern', 'search', 'config', 'lens', 'map', 'tag', 'canvas-workpad', 'canvas-element'. Supports multiple formats but will use first type for single object creation.

Get a single Kibana saved object by type and ID. This is a universal tool that can retrieve any type of saved object (dashboard, visualization, index-pattern, search, config, lens, map, tag, canvas-workpad, canvas-element, etc.) by its exact type and ID. Use this when you know the specific object you want to retrieve. PERFORMANCE: This is much faster than searching when you have the exact type and ID.

REQUIRED: The saved object ID. This is the unique identifier for the specific object you want to retrieve.

REQUIRED: The saved object type. Common types: 'dashboard', 'visualization', 'index-pattern', 'search', 'config', 'lens', 'map', 'tag', 'canvas-workpad', 'canvas-element'. Supports multiple formats: single string 'dashboard', array ['dashboard'], JSON string '["dashboard"]', or comma-separated 'dashboard,visualization' (will use first type for single object retrieval).

Use resolve API instead of get API. The resolve API can handle legacy URL aliases from object ID migrations. Use this if you're having trouble finding an object that may have had its ID changed during Kibana upgrades. Default: false.

Search for Kibana saved objects using Elasticsearch query syntax. This is a universal tool that can search across all saved object types (dashboard, visualization, index-pattern, search, config, lens, map, tag, canvas-workpad, canvas-element, etc.). IMPORTANT: You must specify the 'types' parameter - it is required by the Kibana API. PERFORMANCE TIPS: Always use 'fields' parameter to specify only needed fields (e.g., ['title', 'description']) for faster responses. Use 'perPage' 5-20 for optimal speed. PAGINATION: To get all results, make multiple requests with incrementing 'page' numbers (page=1, page=2, etc.) until you receive fewer results than 'perPage'. Don't stop at the first page - iterate through all pages for complete data. Returns formatted saved object information including type, title, description, and timestamps.

Aggregation structure, serialized as a string. Use for advanced analytics on saved objects.

Default operator for simple_query_string (OR/AND, default: OR)

PERFORMANCE OPTIMIZATION: Specify which fields to return in the attributes key. Examples: ['title', 'description'] for basic info, ['title', 'description', 'updated_at'] for metadata. IMPORTANT: Using this parameter dramatically improves response speed and reduces data size. Without it, all object data is returned which can be very slow for large objects.

KQL string filter (e.g., 'dashboard.attributes.title: "My Dashboard"')

Filter to objects that do not have a relationship with the type and identifier combination. Example: {type: 'index-pattern', id: 'my-pattern-id'}

Operator for has_no_reference parameter (OR/AND, default: OR)

Filter to objects that have a relationship with the type and ID combination. Example: {type: 'index-pattern', id: 'my-pattern-id'}

Operator for has_reference parameter (OR/AND, default: OR)

Page number to return (starts from 1). Use with perPage for pagination. Example: page=1 gets first 20 results, page=2 gets results 21-40, etc. IMPORTANT: To get all results, you need to make multiple requests with incrementing page numbers until you receive fewer results than perPage. Don't stop at page 1 - iterate through all pages to get complete data.

Number of saved objects per page (default: 20). PERFORMANCE TIP: Use 5-20 for faster responses. Large values (>50) can be slow and may timeout. Always combine with 'fields' parameter to limit data when using large perPage values.

Search query to filter saved objects. Supports boolean operators (AND, OR), wildcards (*), and phrases in quotes. Example: 'nginx AND logs' or 'web*'.

Field to sort by (e.g., 'updated_at', 'created_at', 'type', 'dashboard.attributes.title')

Sort order: 'asc' for ascending, 'desc' for descending (default: 'desc')

REQUIRED: Saved object types to include. Common types: 'dashboard', 'visualization', 'index-pattern', 'search', 'config', 'lens', 'map', 'tag', 'canvas-workpad', 'canvas-element'. Use ['dashboard', 'visualization'] to search both types. You must specify at least one type.

Update a single Kibana saved object by type and ID. This performs a partial update - only the specified attributes will be changed, other attributes remain unchanged. Supports all saved object types (dashboard, visualization, index-pattern, search, config, lens, map, tag, canvas-workpad, canvas-element, etc.). IMPORTANT: Use version parameter for optimistic concurrency control to prevent conflicts.

REQUIRED: Object containing the attributes to update. Only specified attributes will be changed (partial update). Common fields: 'title', 'description'. Type-specific fields: Dashboard: 'panelsJSON', 'timeRestore'. Visualization: 'visState', 'uiStateJSON'. All JSON fields should be strings.

OPTIONAL: Array of references to other saved objects. Updates the object's references. Each reference needs id, type, and name.

ID of the referenced object

Reference name used in the object

Type of the referenced object

REQUIRED: The saved object type. Common types: 'dashboard', 'visualization', 'index-pattern', 'search', 'config', 'lens', 'map', 'tag', 'canvas-workpad', 'canvas-element'. Supports multiple formats but will use first type for single object update.

OPTIONAL: Attributes to use if the object doesn't exist (will create object if not found). Useful for create-or-update scenarios.

OPTIONAL: Version string for optimistic concurrency control. Use this to prevent conflicts when multiple processes update the same object. Get the version from a previous get/search operation.


Analyze text for profanity with detailed results including each match, its category, position, severity score, and cleaned text. Best for content moderation dashboards and guard rail decisions.

profanity sexual slur insult religious drugs violence

The text to analyze

Check if text contains profanity or inappropriate content. Returns true/false. Useful as a guard rail before processing user input.

Only check these categories. Omit to check all. Options: profanity, sexual, slur, insult, religious, drugs, violence

If true, only use custom_words with no built-in word lists. Great for brand-specific or domain-specific filtering.

Custom words to add to the filter. Use alone (without language packs) for purely custom filtering.

Language pack: "en" for English only, "all" for all 25 languages

Evasion detection level. "moderate" catches l33t speak ($h1t→shit). "aggressive" also catches homoglyphs and zero-width chars.

The text to check for profanity

Clean text by replacing profane words with placeholders (e.g. "fuck" → "****"). Returns the censored text.

Character used for censoring (default: *)

Replacement style. asterisk: "****", grawlix: "@#$%", word: "[censored]", full: repeated placeholder

The text to clean


Accept browser dialog. Provide promptText for prompts.

Text for prompt dialogs

Clear the tracked downloads buffer.

Clear snapshot UIDs. Usually not needed.

Click element by UID. Set dblClick for double-click.

Double-click (default: false)

Element UID from snapshot

Close tab by index.

Tab index to close

Dismiss browser dialog.

Drag element to another (HTML5 drag events).

Source element UID

Target element UID

Run a JS function in the page and return its result. Prefer this for targeted reads (a value, text, computed style, whether an element exists) instead of a full take_snapshot. Use the UID interaction tools for clicking, typing, and filling.

UIDs to pass as function arguments

Element UID from snapshot

JS function string, e.g. () => document.title

Number of characters of the saved result to return inline as a preview when saveTo is used. Omit for no preview.

Evaluate in an isolated sandbox realm with this name instead of the page realm. The sandbox shares the page DOM and keeps the native built-ins even where the page overrode them. Page-defined globals and expandos are invisible from the sandbox, and vice-versa. The same name reuses the same sandbox across calls; omit to evaluate in the page realm.

Save the result to a file as JSON instead of returning it inline. Pass a file path, an existing directory (generated file inside), or true (generated file under ~/.firefox-devtools-mcp/output/). Relative paths resolve against the current working directory.

Timeout in ms (default: 5000)

Fill text input/textarea by UID.

Input element UID from snapshot

Text to fill

Fill multiple form fields at once.

Array of {uid, value} pairs

Field UID

Field value

Get information about the current Firefox instance configuration, including binary path, environment variables, and output file location.

Retrieve Firefox output (stdout/stderr including MOZ_LOG, warnings, crashes, stack traces). Returns recent output from the capture file. Use filters to focus on specific content.

Filter log lines containing this string (case-insensitive)

Number of recent log lines to return (default: 100, max: 10000)

Only show logs written in the last N seconds

Get the visible text of the page (document.body.innerText). Caps at maxLength (default 20000 chars); saveTo saves the full text to a file.

Max characters to return inline (default: 20000). Ignored when saveTo is used.

Number of characters of the saved text to return inline as a preview when saveTo is used. Omit for no preview.

Save the full untruncated text to a file instead of returning it inline. Pass a file path, an existing directory (generated file inside), or true (generated file under ~/.firefox-devtools-mcp/output/). Relative paths resolve against the current working directory.

Hover over element by UID.

Element UID from snapshot

Install a Firefox extension using WebDriver BiDi webExtension.install command. Supports installing from archive (.xpi/.zip), base64-encoded data, or unpacked directory.

File path (for archivePath or path types)

Firefox-specific: Install permanently (requires signed extension). Default: false (temporary install)

Extension data type: "archivePath" for .xpi/.zip, "base64" for encoded data, "path" for unpacked directory

Base64-encoded extension data (for base64 type)

List downloads tracked since startup, including status and saved file path.

Output format (default: text)

Max downloads (default: 50)

Filter by status

URL filter (case-insensitive)

List open tabs (index, title, URL). Selected tab is marked.

Navigate history back/forward. UIDs become stale.

back or forward

Navigate selected tab to URL.

Target URL

Open new tab at URL. Returns tab index.

Target URL

Resolve UID to CSS selector. Fails if the element is gone.

UID from snapshot

Restart Firefox with different configuration. Allows changing binary path, environment variables, and other options. All current tabs will be closed.

New environment variables in KEY=VALUE format (optional, e.g., ["MOZ_LOG=HTMLMediaElement:5", "MOZ_LOG_FILE=/tmp/ff.log"])

New Firefox binary path (optional, keeps current if not specified)

Run in headless mode (optional, keeps current if not specified)

Firefox preferences to set at startup. Values are auto-typed: true/false become booleans, integers become numbers, everything else is a string. Requires MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1.

Firefox profile path (optional, keeps current if not specified)

URL to navigate to after restart (optional, uses about:blank if not specified)

Start recording a screencast (video) of the current page viewport, saving the output to a file in the downloads directory. Returns a screencast id to pass to screencast_stop. Multiple recordings can run at once.

Id of the top-level browsing context to record. Defaults to the currently selected page.

Target frame rate of the recording, in frames per second.

Height of the recorded video in pixels. Defaults to the viewport height.

MIME type of the output file. Defaults to "video/webm".

Width of the recorded video in pixels. Defaults to the viewport width.

Stop an in-progress screencast recording started with screencast_start and finalize the video file. Returns the path to the saved file.

Id of the screencast to stop, as returned by screencast_start. Optional when exactly one recording is active.

Capture element screenshot by UID as base64 PNG.

Save the screenshot to a file instead of returning it as image data in the response. Pass a file path, an existing directory (generated file inside), or true (generated file under ~/.firefox-devtools-mcp/output/). Relative paths resolve against the current working directory.

Element UID from snapshot

Capture page screenshot as base64 PNG.

Select active tab by index, URL, or title. Index takes precedence.

Tab index (0-based, most reliable)

Title substring (case-insensitive)

URL substring (case-insensitive)

Control how downloads are handled: allow (save silently to the default download directory), deny (cancel), or reset to default. Avoids the native save-file dialog. Requires a recent Firefox.

'allowed' saves downloads automatically, 'denied' cancels them, 'default' resets to the browser default

Set viewport dimensions in pixels.

Height in pixels

Width in pixels

Capture DOM snapshot with stable UIDs. A UID stays valid across snapshots until its element is removed or the page navigates. Output caps at maxLines (default 100); scope with selector or dump the full tree with saveTo.

Include all visible elements without relevance filtering. Useful for Vue/Livewire apps (default: false)

Include ARIA attributes (default: false)

Include text (default: true)

Max tree depth

Max lines (default: 100)

Number of characters of the saved output to return inline as a preview when saveTo is used. Omit for no preview.

Save the complete snapshot text to a file (ignores maxLines) instead of returning it inline. Pass a file path, an existing directory (generated file inside), or true (generated file under ~/.firefox-devtools-mcp/output/). Relative paths resolve against the current working directory.

CSS selector to scope snapshot to specific element (e.g., "#app")

Uninstall a Firefox extension using WebDriver BiDi webExtension.uninstall command. Requires the extension ID returned by install_extension or obtained from list_extensions.

Extension ID (e.g., "addon@example.com")

Upload file to file input by UID.

Local file path

File input UID from snapshot


fetch-doc-chunks

Fetch related doc chunks using keywords or questions. This tool will return the most relevant chunks of documentation based on the input query.

The number of chunks to retrieve (default: 10)

The keywords or question to search for

get-doc

Get a doc by his key. Example: `./docs/en/getting-started.md`. List all docs metadata first to get more details about what doc key to retrieve.

get-doc-by-slug

Get an array of docs by their slugs. If not slug is provided, return all docs (1.2Mb). List all docs metadata first to get more details about what doc to retrieve.

Slug of the docs. If not provided, return all docs. If not provided, return all docs.

Strict mode - only return docs that match all slugs, by excluding additional slugs

get-doc-list

Get the list of docs names and their metadata to get more details about what doc to retrieve

intlayer-build

Build the dictionaries. List all content declarations files `.content.{ts,tsx,js,json,...}` to update the content callable using the `useIntlayer` hook.

Configuration options. Required when running remotely or when no intlayer config file is present

Base directory for the project

Environment name

Path to the environment file

Config override - use when running remotely or without a local config file

Intlayer CMS backend URL

Intlayer CMS client ID

Intlayer CMS client secret

Default locale

af af-ZA sq sq-AL am am-ET ar ar-DZ ar-BH ar-TD ar-KM ar-DJ ar-EG ar-IQ ar-JO ar-KW ar-LB ar-LY ar-MR ar-MA ar-OM ar-PS ar-QA ar-SA ar-SO ar-SD ar-SY ar-TN ar-AE ar-YE hy hy-AM az az-AZ eu eu-ES be be-BY bn bn-BD bn-IN bn-MM bs bs-BA bg bg-BG my my-MM ca ca-ES zh zh-HK zh-MO zh-Hans zh-CN zh-SG zh-TW zh-Hant hr hr-BA hr-HR cs cs-CZ da da-DK dv dv-MV nl nl-BE nl-NL en en-AU en-BZ en-BW en-CA en-CB en-GH en-HK en-IN en-IE en-JM en-KE en-MY en-NZ en-NG en-PK en-PH en-SG en-ZA en-TZ en-TT en-UG en-GB en-US en-ZW eo et et-EE fo fo-FO fa fa-IR fi fi-FI fr fr-BE fr-CA fr-FR fr-LU fr-MC fr-CH mk mk-MK gl gl-ES ka ka-GE de de-AT de-DE de-LI de-LU de-CH el el-GR gu gu-IN he he-IL hi hi-IN hu hu-HU is is-IS id id-ID ga ga-IE it it-IT it-CH ja ja-JP kn kn-IN kk kk-KZ km km-KH kok kok-IN ko ko-KR ku ku-TR ky ky-KG lo lo-LA lv lv-LV lt lt-LT dsb dsb-DE mg-MG ms ml ml-IN ms-BN ms-MY mt mt-MT mi mi-NZ mr mr-IN mn mn-MN ne ne-NP ns ns-ZA no nb nb-NO nn nn-NO ps ps-AR pl pl-PL pt pt-BR pt-CV pt-GW pt-MO pt-MZ pt-PT pt-ST pt-TL pa pa-IN qu qu-BO qu-EC qu-PE ro ro-MD ro-RO rm rm-CH ru ru-MD ru-RU se se-FI se-NO se-SE sa sa-IN gd gd-GB sr-Cyrl sr-BA sr-RS sr sr-BA sr-SP si si-LK sk sk-SK sl sl-SI es es-AR es-BO es-CL es-CO es-CR es-CU es-DO es-EC es-SV es-GT es-HN es-MX es-NI es-PA es-PY es-PE es-PR es-ES es-US es-UY es-VE sw sw-KE sv sv-FI sv-SE syr syr-SY tl tl-PH ta ta-IN tt tt-RU te te-IN th th-TH ts tn tn-ZA tr tr-TR uk uk-UA hsb hsb-DE ur ur-PK uz uz-UZ ve ve-ZA vi vi-VN cy cy-GB xh xh-ZA yi yi-001 yo yo-NG zu zu-ZA

Available locales

Log mode

Log prefix

Watch for changes

intlayer-cms-environment-create

Create a new CMS environment in the selected project.

Intlayer OAuth2 client ID (access key). Falls back to INTLAYER_CLIENT_ID env var.

Intlayer OAuth2 client secret. Falls back to INTLAYER_CLIENT_SECRET env var.

Environment name

intlayer-cms-environment-delete

Delete a CMS environment by its ID.

Environment ID to delete

intlayer-cms-environment-migrate

Migrate dictionaries and configuration from one environment to another.

Whether to migrate environment configuration

Whether to migrate content (dictionaries)

Source environment ID

Migration strategy: overwrite existing or only fill missing

Target environment ID

intlayer-cms-environment-reset

Reset the current active environment to the default production environment.

intlayer-cms-environment-select

Select a CMS environment as the current active environment. Required before accessing environment-specific dictionaries.

Environment ID to select

intlayer-cms-environment-update

Update the selected CMS environment settings.

Environment ID to update

New environment name

intlayer-cms-project-create

Create a new CMS project in the selected organization.

Project name

intlayer-cms-project-select

Select a CMS project as the current active project. Required before accessing project-specific dictionaries.

Project ID to select

intlayer-cms-project-update

Update the selected CMS project settings.

New project name

intlayer-cms-projects-list

List all Intlayer CMS projects for the selected organization. These are server-side projects, not local project directories.

Page number (1-based)

Items per page

intlayer-content-list

List the content declaration (.content.{ts,tsx,js,json,...}) files present in the project. That files contain the multilingual content of the application and are used to build the dictionaries.

Output the results as absolute paths instead of relative paths

Base directory for the project

Environment name

Path to the environment file

Intlayer CMS backend URL

Intlayer CMS client ID

Intlayer CMS client secret

Default locale

Available locales

Log mode

Log prefix

Output the results as JSON instead of formatted text

intlayer-content-test

Test if there are missing translations in the content declaration files. That files contain the multilingual content of the application and are used to build the dictionaries.

Base directory for the project

Environment name

Path to the environment file

Intlayer CMS backend URL

Intlayer CMS client ID

Intlayer CMS client secret

Default locale

Available locales

Log mode

Log prefix

intlayer-dictionaries-list

List all dictionaries for the selected project. Returns keys, IDs, and metadata.

Page number (1-based)

Items per page

intlayer-dictionary-create

Create a new dictionary in the selected project.

Initial content as JSON object

Description of the dictionary

Unique key for the dictionary

Human-readable title

intlayer-dictionary-delete

Delete a dictionary by its ID. This action is irreversible.

Dictionary ID to delete

intlayer-dictionary-get

Get a dictionary by its key, including its full content.

The dictionary key

intlayer-dictionary-update

Update an existing dictionary content or metadata.

Updated content as JSON object

New description

Dictionary ID

New key for the dictionary

New title

intlayer-extract

Extract strings from an existing component to be placed in a .content file close to the component. Trigger this action to make an existing component multilingual. If the component does not exist, create a normal component including text in JSX, and then trigger this tool to extract it.

Base directory for the project

Environment name

Path to the environment file

Intlayer CMS backend URL

Intlayer CMS client ID

Intlayer CMS client secret

Default locale

Available locales

Log mode

Log prefix

List of files to extract

Path to output content declaration files

intlayer-fill

Fill the dictionaries with missing translations / review translations using Intlayer servers

AI options

Base directory for the project

Environment name

Path to the environment file

Intlayer CMS backend URL

Intlayer CMS client ID

Intlayer CMS client secret

Default locale

Available locales

Log mode

Log prefix

Keys to exclude

File path

Git options

Keys to include

Fill mode

Output locales

Path filter

Source locale

intlayer-init

Initialize Intlayer in the project

Project root directory

intlayer-install-lsp

Configure the Intlayer Language Server in the project. Writes `intlayer.languageServer.command` and `intlayer.languageServer.args` to `.vscode/settings.json` so that VS Code, Cursor, and Windsurf automatically start the language server, enabling Go-to-Definition for `useIntlayer` and `getIntlayer` calls. Returns next-step instructions for installing the `@intlayer/lsp` binary and, optionally, registering the Intlayer Claude Code plugin.

Root directory of the project. Defaults to current working directory.

intlayer-install-skills

Install Intlayer documentation and skills to the project to assist AI agents. Ask the user for the platform (Cursor, VSCode, OpenCode, Claude, etc.) and which skills they want to install before calling this tool.

The platform to install skills for

Cursor Windsurf Trae TraeCN VSCode OpenCode Claude GitHub Antigravity Augment OpenClaw Cline CodeBuddy CommandCode Continue Crush Droid Goose IFlow Junie KiloCode Kiro Kode MCPJam MistralVibe Mux OpenHands Pi Qoder Qwen RooCode Zencoder Neovate Pochi Other

Root directory of the project. Defaults to current directory.

List of skills to install

Config Content Usage CLI Compiler RemoteContent NextJS React Vue Svelte Angular Preact Solid Astro

intlayer-organization-select

Select an organization as the current active organization. Required before accessing organization-specific resources.

Organization ID to select

intlayer-organization-update

Update the selected organization name or settings.

Custom AI instructions for this organization

New organization name

intlayer-organizations-list

List all organizations the authenticated user belongs to.

Page number (1-based)

Items per page

intlayer-projects-list

List all Intlayer projects in the directory. Search for configuration files to find all Intlayer projects.

Base directory to search from

Search from the git root directory instead of the base directory

intlayer-pull

Pull dictionaries from the CMS

Base directory for the project

Environment name

Path to the environment file

Intlayer CMS backend URL

Intlayer CMS client ID

Intlayer CMS client secret

Default locale

Available locales

Log mode

Log prefix

List of dictionaries to pull

Path to save new dictionaries

intlayer-push

Push local dictionaries to the server

Base directory for the project

Environment name

Path to the environment file

Intlayer CMS backend URL

Intlayer CMS client ID

Intlayer CMS client secret

Default locale

Available locales

Log mode

Log prefix

Delete local dictionary after push

List of dictionaries to push

Git options

Keep local dictionary after push

intlayer-scan

Scan a website to measure its page size and audit its i18n / SEO health (html lang/dir, canonical, hreflang, x-default, localized internal links, robots.txt, sitemap.xml, and unused bundle locale content). Returns a 0-100 score and per-check results.

Attempt a deeper render-based scan using a locally installed puppeteer. Falls back to a basic fetch scan when puppeteer is not installed.

Absolute URL of the website to scan

intlayer-tag-create

Create a new tag in the organization. Tags can be used to group dictionaries and provide AI context.

Tag color (hex code)

Description of the tag

AI instructions to apply when this tag is used

Unique tag key

Display name for the tag

intlayer-tag-delete

Delete a tag by its ID.

Tag ID to delete

intlayer-tag-update

Update an existing tag.

New color (hex code)

New description

New AI instructions

New key

New display name

Tag ID to update

intlayer-tags-list

List all tags for the selected organization.

Page number (1-based)

Items per page

review-doc-blocks

Compare a base markdown document with its translation and return only the blocks that diverge (changed, missing, or stale), with their line ranges and content. Use this to translate a large document incrementally without retranslating it from scratch: it tells you exactly which blocks to (re)translate. Optionally pass the base line numbers that changed (for example from a git diff) so aligned-but-edited blocks are flagged for review.

The base (source) markdown document, used as reference

Label for the base locale in the formatted output

1-based line numbers that changed in the base document. When omitted, only inserted and deleted blocks are reported.

Output format. Defaults to "text".

The existing translated markdown document (may be empty for a brand new translation)

Label for the target locale in the formatted output


Add a new stream to the active orchestration.

Stream IDs this depends on

Unique stream ID

Human-readable stream name

File paths this stream owns (relative, no .., no globs)

Implementation plan for the stream

Project directory

File paths this stream needs to read but does not own (relative, no .., no globs)

Setup commands to run before the stream executes

Verification commands to run after the stream completes

Add Stream

auto

Start here. Takes any input (intent, PRD, spec, bug report), generates an implementation plan, previews streams, and optionally executes. The primary entry point for all orchestrations.

If true, execute immediately after preview. If false (default), return preview only.

Stream IDs to approve for execution. Non-listed pending streams will be skipped. Omit this parameter to approve all streams (default behavior).

What you want to build (e.g., "Add user authentication with JWT")

LLM model override

Path to pre-written plan markdown file. Bypasses LLM plan generation and uses the plan directly.

Project directory (defaults to cwd)

LLM provider override

Auto-Orchestrate

complete

Mark a stream as complete, or archive the entire orchestration.

Archive the orchestration

Project directory

Stream ID to mark complete

Complete

execute

Run the orchestration. Each call executes one wave of streams in parallel via LLM API, applies artifacts to the codebase, and runs verification commands. Call repeatedly for each wave, or use auto mode.

Preview without executing (default: false)

When true with mode=auto, re-plan and re-execute if failures remain. Max 3 iterations.

Maximum iterations for iterative mode (default: 3, max: 5).

auto: execute all waves sequentially. wave: execute one wave and return.

LLM model override (auto-detected based on provider)

Project directory

Run a specific wave number (optional)

Execute Orchestration

init

Initialize a new orchestration for a feature. Creates .orchex/active/manifest.yaml with streams.

Feature name (e.g., "user-authentication")

Project directory (defaults to cwd)

pending in_progress complete failed skipped blocked circuit_breaker

Map of stream ID → stream definition

Initialize Orchestration

init-plan

Generate an annotated plan template for manual editing. Advanced workflow — use auto for most cases.

Feature name for the plan (used in title and example stream IDs)

Output file path. Defaults to docs/plans/YYYY-MM-DD-<feature>-plan.md

Project directory (defaults to cwd)

Generate Plan Template

learn

Parse a structured implementation plan into stream definitions. Internal pipeline stage — use auto for most workflows. Expects markdown with code deliverables, not PRDs or specs.

Header level for deliverables (2=H2, 3=H3)

Plan document contents as string. When provided, used instead of reading document_path from disk. Useful for cloud mode where the server cannot access local files.

Path to the markdown planning document

Optional prefix for stream IDs

Project directory (for resolving relative paths)

Validate generated streams against anti-patterns

Learn from Plan

recover

Recover streams stuck in in_progress state or failed state. Auto-detects stuck streams and resets them to pending for retry, or skips them.

Also recover failed streams (not just stuck in_progress ones).

retry: reset stuck streams to pending. skip: mark them as skipped.

Project directory

Specific stream ID to recover. If omitted, recovers all stuck streams.

Recover Stuck Streams

reload

Restart the MCP server to pick up rebuilt code. MCP client will reconnect automatically.

Reload MCP Server

reset-learning

Reset learning data: thresholds, events, patterns, and/or reports.

Must be true to proceed

Only reset patterns

Project directory

Only reset reports

Reset Learning

rollback-stream

Revert file changes made by a specific stream using git.

Project directory

Stream ID to rollback

Rollback Stream

status

Get the current orchestration status and progress. Call every 15-30 seconds during execution to show the user real-time progress.

Project directory

Orchestration Status


Add tracks or episodes to a playlist. Max 100 URIs per call.

Playlist ID

Insert at index; appends if omitted

Track or episode URIs to add

Add a track or episode to the end of the playback queue

Target device ID

Spotify track or episode URI (e.g. spotify:track:...)

Check if the user follows specific artists. Returns a boolean per ID. Max 50.

Spotify artist IDs to check

Check whether items are saved in the user's library. Returns a boolean per URI. Accepts track, album, show, and episode URIs. Max 40.

Spotify URIs to check (accepts tracks, albums, shows, episodes)

Create a new playlist for the current user

Whether the playlist is collaborative. Default: false

Playlist description

Playlist name

Whether the playlist is public. Default: false

Get album details and track list by ID

Spotify album ID

List the tracks of an album with pagination

Spotify album ID

Results per page, 1–50. Default: 20

Index of the first track to return. Default: 0

Get artist info by ID

Spotify artist ID

List an artist's albums and singles

Spotify artist ID

Album types to include. Default: ["album","single"]

Results per page, 1–50. Default: 20

Get full details for an audiobook by ID. Audiobooks are only available in the US, UK, Canada, Ireland, New Zealand and Australia markets.

Spotify audiobook ID

ISO 3166-1 alpha-2 country code. If given, only content available in that market is returned. Audiobooks are only available in the US, UK, Canada, Ireland, New Zealand and Australia markets.

List the chapters of an audiobook with pagination. Audiobooks are only available in the US, UK, Canada, Ireland, New Zealand and Australia markets.

Spotify audiobook ID

Results per page, 1–50. Default: 20

Index of the first chapter to return. Default: 0

Get full details for a single audiobook chapter by ID. Resume position requires the user-read-playback-position scope. Audiobooks are only available in the US, UK, Canada, Ireland, New Zealand and Australia markets.

Spotify chapter ID

Lightweight poll of what is playing right now: the item, progress, and playing state

List available Spotify Connect devices

Get full details for a podcast episode

Spotify episode ID

ISO 3166-1 alpha-2 country code

Get all artists the user follows (cursor-based pagination)

Artist ID cursor for pagination (from previous response)

1–50. Default: 20

Get the current user's Spotify profile: display name, user ID, email, country, and subscription level. Email requires the user-read-email scope; country and product require user-read-private.

Get the currently playing track or episode and full playback state

Get a playlist's metadata (including cover image) and items

Fetch all items across pages (up to 500) instead of a single page

Playlist ID

Items per page, 1–100. Default: 50

Pagination offset for items. Default: 0

Get a playlist's cover image URLs

Playlist ID

Get the current playback queue

Get recently played tracks with timestamps

Unix timestamp ms — return tracks played after this time

Unix timestamp ms — return tracks played before this time

1–50. Default: 20

Get albums saved in the user's library. Set fetch_all=true to retrieve the entire collection (capped at 500 items).

Fetch all pages instead of one page (ignores limit/offset; capped at 500 items)

1–50. Default: 20

ISO 3166-1 alpha-2 country code

Pagination offset. Default: 0

List the audiobooks saved in the current user's Spotify library. Requires the user-library-read scope.

Results per page, 1–50. Default: 20

Index of the first audiobook to return. Default: 0

Get podcast episodes saved in the user's library. Set fetch_all=true to retrieve the entire collection (capped at 500 items).

1–50. Default: 20

ISO 3166-1 alpha-2 country code

Pagination offset. Default: 0

Get podcast shows saved in the user's library. Set fetch_all=true to retrieve the entire collection (capped at 500 items).

1–50. Default: 20

Pagination offset. Default: 0

Get tracks saved in the user's Liked Songs. Set fetch_all=true to retrieve the entire collection (capped at 500 items).

1–50. Default: 20

ISO 3166-1 alpha-2 country code

Pagination offset. Default: 0

Get full details for a podcast show

Spotify show ID

ISO 3166-1 alpha-2 country code

List a podcast show's episodes with pagination. Resume positions require the user-read-playback-position scope.

Spotify show ID

Results per page, 1–50. Default: 20

ISO 3166-1 alpha-2 country code. If given, only shows and episodes available in that market are returned.

Index of the first episode to return. Default: 0

Get the user's most-played artists

1–50. Default: 20

~4 weeks / ~6 months / all time. Default: medium_term

Get the user's most-played tracks

1–50. Default: 20

Get full details for a track by ID

Spotify track ID

List the current user's playlists

Fetch every page (up to 500 playlists) instead of a single page

1–50. Default: 20

Pagination offset. Default: 0

pause

Pause playback on the active device

Target device ID

play

Start or resume playback. Optionally target specific content.

Spotify URI for an album, artist, or playlist

Target device ID; uses active device if omitted

Index within context to start from

Seek position to start at (ms)

Up to 100 track/episode URIs to play as an ad-hoc queue

Search Spotify by name and immediately play the best match. Works for songs and podcast episodes — no URI needed.

Search text, e.g. a song title or podcast episode name

What to search for: 'track' (song) or 'episode' (podcast episode)

Remove tracks or episodes from a playlist

Playlist ID

URIs to remove

Remove one or more items from the user's library. Accepts track, album, show, and episode URIs (e.g. spotify:track:abc). Max 50.

Spotify URIs to remove

Move a range of items within a playlist

Index to insert the range before

Playlist ID

Number of items to move. Default: 1

Index of the first item to move

Save one or more items to the user's library. Accepts track, album, show, and episode URIs (e.g. spotify:track:abc). Max 50.

Spotify URIs to save (e.g. ["spotify:track:abc", "spotify:album:xyz"])

search

Search Spotify's catalog for tracks, artists, albums, playlists, shows, or episodes. Pass `types` as an array (e.g. `["artist"]`) to search a single kind — no track/album fallback noise.

Results per type, 1–10. Default: 5

ISO 3166-1 alpha-2 country code

Search query

Content types to search, as an array. Default: ["track","artist","album"]. Pass e.g. ["artist"] for an artist-only search.

track artist album playlist show episode

seek

Seek to a position in the current track

Target device ID

Position in milliseconds

Set repeat mode: off, context (repeat playlist/album), or track (repeat single track)

Target device ID

Repeat mode

Enable or disable shuffle mode

Target device ID

true = shuffle on, false = shuffle off

Set playback volume (0–100)

Target device ID

Volume level 0–100

Skip to the next track in the queue or context

Target device ID

Skip to the previous track. If more than 3 seconds in, restarts the current track first.

Target device ID

Move playback to a different Spotify Connect device

Target device ID to transfer playback to

Force play immediately (default: maintain current state)

Update a playlist's name, description, or visibility

New collaborative state

New description

Playlist ID

New name

New public state

Replace a playlist's cover image with a base64-encoded JPEG. Requires the ugc-image-upload scope on the Spotify developer dashboard app (plus playlist-modify-public/private); without it Spotify rejects the upload with 403.

Base64-encoded JPEG file contents (max 256 KB decoded)

Playlist ID


Start or continue a multi-turn discussion with the AI council. First call (without session_id) starts a new discussion and returns a session_id. Subsequent calls with the session_id continue the conversation. Each model maintains its own conversation history for authentic perspectives.

Additional context for new discussions (code snippets, plan details, etc.)

Type of discussion (only used when starting new session). 'code_review' for code-related discussions, 'plan_review' for architecture/planning, 'general' for other topics. Default: general

Your message or question for the council

Session ID to continue an existing discussion. Omit to start a new discussion.

Generate a Code Council configuration file with default values. Creates a TypeScript or JavaScript config file with model settings, consensus options, and LLM parameters.

Overwrite existing config file (default: false)

Config file format (default: typescript)

Include explanatory comments in the config (default: true)

Where to create config: 'directory' for .code-council/config.ts, 'root' for code-council.config.ts (default: directory)

Show current model configuration

Review backend code for security, performance, architecture, and best practices using multiple AI models in parallel

The backend code to review

Additional context

Programming language/framework (e.g., node, python, go, rust)

Output format for the review (default: markdown)

Type of review to perform (default: full)

Review code for quality, bugs, performance, and security issues using multiple AI models in parallel

The code to review

Additional context about the code

Programming language of the code

Review frontend code for accessibility, performance, UX, and best practices using multiple AI models in parallel

The frontend code to review

Additional context

Frontend framework (e.g., react, vue, svelte)

Review git changes (staged, unstaged, diff, or specific commit) using multiple AI models in parallel

Commit hash to review (only used when review_type is 'commit')

Additional context about the changes

Type of changes to review: 'staged' (git diff --cached), 'unstaged' (git diff), 'diff' (git diff main..HEAD), 'commit' (specific commit). Default: staged

Review implementation plans BEFORE coding to catch issues early using multiple AI models in parallel

Additional context about the project or constraints

The implementation plan to review

feasibility completeness risks timeline full

Toyota Production System audit - analyze a codebase for flow, waste, bottlenecks, and quality. Scans the repository, identifies entry points, maps data flow, and provides actionable recommendations. Outputs interactive HTML report by default, or markdown/JSON.

File extensions to include (e.g., ['.ts', '.js'])

Specific areas to focus on (e.g., 'performance', 'security')

Include potentially sensitive files (default: false, use with caution)

Maximum files to analyze (default: 50)

Output format (default: html)

Path to repo root (auto-detects current directory if not provided)