API reference

server.py · Developer tools

Browse entries grouped by interface file. Expand an entry for declarations, usage and version boundaries.

Read the related guide →

Entries retain declarations and sources. Runtime verification is recorded per entry; internal source candidates are not a promise of SDK delivery.

tools/kui_devtools_mcp/server.py
kui_accessibility
Declared3.61.7MCP

Get the full Accessibility tree (AX tree) of the KUI document. Returns a tree of accessible nodes with roles, names, and properties. Useful for verifying ARIA attributes and screen-reader compatibility.

server.py
kui_accessibility()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1597

Report an issue with this entry →
kui_box_model
Declared3.61.7MCP

Get layout box model quads (content / padding / border / margin) for an element. Returns four 8-float coordinate arrays (clockwise from top-left) plus element width and height in CSS pixels. Args: selector: CSS selector identifying the element

server.py
kui_box_model(selector: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1404

Report an issue with this entry →
kui_breakpoint_remove
Declared3.61.7MCP

Remove a breakpoint by its numeric ID (returned by kui_breakpoint_set). Args: breakpoint_id: Numeric ID returned from kui_breakpoint_set

server.py
kui_breakpoint_remove(breakpoint_id: int)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1902

Report an issue with this entry →
kui_breakpoint_set
Declared3.61.7MCP

Set a breakpoint in a Lua script. Args: source: Script source name or filename (e.g. "main.lua", "ui/handlers.lua") line: 1-based line number to break on condition: Optional Lua expression; break only when it evaluates to true log_message: Optional log message (logpoint — logs but does not pause)

server.py
kui_breakpoint_set(source: str, line: int, condition: str='', log_message: str='')

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1881

Report an issue with this entry →
kui_breakpoints
Declared3.61.7MCP

List all active breakpoints with their source, line, and condition.

server.py
kui_breakpoints()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1912

Report an issue with this entry →
kui_call_stack
Declared3.61.7MCP

Get the current Lua call stack (only valid when execution is paused). Returns a list of stack frames with source file, line, and function name.

server.py
kui_call_stack()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1959

Report an issue with this entry →
kui_click
Declared3.61.7MCP

Click at viewport coordinates (CSS pixels) in the KUI window. Args: x: X coordinate (viewport-relative, CSS pixels) y: Y coordinate (viewport-relative, CSS pixels) button: "left" | "middle" | "right" (default "left") click_count: 1 = single click, 2 = double-click modifiers: Bitmask — 1=Alt, 2=Ctrl, 4=Meta, 8=Shift

server.py
kui_click(x: float, y: float, button: str='left', click_count: int=1, modifiers: int=0)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1264

Report an issue with this entry →
kui_connect
Declared3.61.7MCP

Connect to a running KUI application's DevTools server. KUI's /json endpoint aggregates ALL live KUI targets on the machine (KUI-039 unified discovery), so this discovers every running app/window — not just the one on port. Call kui_targets() first to list them. Args: port: DevTools base port to query/scan (default 9229). Discovery also scans the next several ports, so this rarely needs changing. target: Optional selector when multiple apps are running — match by target id (e.g. "kui-9230") or a case-insensitive substring of the title. Empty = pick the app on port, else the first one.

server.py
kui_connect(port: int=9229, target: str='')

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:459

Report an issue with this entry →
kui_console
Declared3.61.7MCP

Get all console messages (KUI_LOG_INFO/WARN/ERROR) from the KUI application.

server.py
kui_console()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1477

Report an issue with this entry →
kui_debugger_disable
Declared3.61.7MCP

Disable the Lua script debugger and remove all breakpoints.

server.py
kui_debugger_disable()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1875

Report an issue with this entry →
kui_debugger_enable
Declared3.61.7MCP

Enable the Lua script debugger. Must be called before setting breakpoints. Requires the KUI app to have called window->attachScriptEngine().

server.py
kui_debugger_enable()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1865

Report an issue with this entry →
kui_debugger_eval
Declared3.61.7MCP

Evaluate a Lua expression in the context of a paused stack frame. Different from kui_eval: this evaluates in the paused frame's local scope, allowing access to local variables and upvalues. Args: expression: Lua expression to evaluate frame_index: Stack frame index (0 = innermost, default 0)

server.py
kui_debugger_eval(expression: str, frame_index: int=0)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1978

Report an issue with this entry →
kui_debugger_state
Declared3.61.7MCP

Get the current debugger state: running | paused | disabled. When paused, also returns the current source file and line number.

server.py
kui_debugger_state()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1918

Report an issue with this entry →
kui_disconnect
Declared3.61.7MCP

Stop any leased performance recording and disconnect from DevTools.

server.py
kui_disconnect()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:535

Report an issue with this entry →
kui_dispatch_event
Declared3.61.7MCP

Fire a synthetic DOM event on the element matching selector. Args: selector: CSS selector identifying the target element event_type: Event type string, e.g. "click", "input", "my-custom-event" bubbles: Whether the event bubbles up the DOM (default True) cancelable: Whether the event can be cancelled (default True) detail: Optional JSON string stored in event.detail (never eval'd)

server.py
kui_dispatch_event(selector: str, event_type: str, bubbles: bool=True, cancelable: bool=True, detail: str='')

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1666

Report an issue with this entry →
kui_dom
Declared3.61.7MCP

Get the DOM tree or a specific element's properties. Args: selector: CSS selector to locate a specific element. Leave empty to get the full document tree. depth: Tree depth when fetching the full document (1–10, default 3)

server.py
kui_dom(selector: str='', depth: int=3)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1373

Report an issue with this entry →
kui_element_at
Declared3.61.7MCP

Find the topmost element at the given viewport coordinates. Useful after a screenshot: identify which element is at a visual position before clicking or inspecting it. Args: x: X coordinate (CSS pixels, viewport-relative) y: Y coordinate (CSS pixels, viewport-relative)

server.py
kui_element_at(x: float, y: float)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1609

Report an issue with this entry →
kui_eval
Declared3.61.7MCP

Evaluate a Lua expression in the KUI scripting engine and return the result. Requires the KUI app to have called window->attachScriptEngine(). Args: expression: Lua expression string, e.g. 'document:getElementById("btn"):getAttribute("class")'

server.py
kui_eval(expression: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1483

Report an issue with this entry →
kui_event_listeners
Declared3.61.7MCP

Get all event listeners attached to the element matching selector. Args: selector: CSS selector identifying the element

server.py
kui_event_listeners(selector: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1656

Report an issue with this entry →
kui_events
Declared3.61.7MCP

Collect push events from KUI for up to 0.5 s and return the last N. Note: In stateless mode this opens a fresh connection and collects whatever push events the server sends within the collection window. Args: count: Maximum number of events to return (default 20)

server.py
kui_events(count: int=20)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1523

Report an issue with this entry →
kui_exception_breaks
Declared3.61.7MCP

Configure exception breakpoints for Lua runtime errors. Args: mode: "none" — never break on exceptions (default) "uncaught" — break only on unhandled errors "all" — break on every error (including pcall'd ones)

server.py
kui_exception_breaks(mode: str='none')

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:2003

Report an issue with this entry →
kui_force_pseudo
Declared3.61.7MCP

Force a CSS pseudo-state on the element matching selector. Useful for inspecting :hover, :focus, :active, :visited styles without actually moving the mouse. Args: selector: CSS selector identifying the element pseudo: Pseudo-state name: "hover" | "focus" | "active" | "visited"

server.py
kui_force_pseudo(selector: str, pseudo: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1720

Report an issue with this entry →
kui_get_style
Declared3.61.7MCP

Get all computed CSS properties for the element matching selector. Args: selector: CSS selector, e.g. "#header", "button.primary"

server.py
kui_get_style(selector: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1431

Report an issue with this entry →
kui_key
Declared3.61.7MCP

Send a keyboard event to the focused element. Common key names: "Enter", "Escape", "Tab", "Backspace", "Delete", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Home", "End", "PageUp", "PageDown", "F1"–"F12", "a"–"z", "0"–"9". Args: key: DOM key name string event_type: "keyDown" | "keyUp" | "char" modifiers: Bitmask — 1=Alt, 2=Ctrl, 4=Meta, 8=Shift

server.py
kui_key(key: str, event_type: str='keyDown', modifiers: int=0)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1347

Report an issue with this entry →
kui_layout_metrics
Declared3.61.7MCP

Get viewport and content layout dimensions of the KUI window.

server.py
kui_layout_metrics()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:659

Report an issue with this entry →
kui_matched_rules
Declared3.61.7MCP

Get the CSS rules that match the element identified by selector. Returns all author and user-agent rules that apply, with their source (inline / stylesheet index / inherited). Args: selector: CSS selector identifying the element

server.py
kui_matched_rules(selector: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1694

Report an issue with this entry →
kui_mouse_move
Declared3.61.7MCP

Move the mouse cursor to viewport coordinates without clicking. Args: x: X coordinate (CSS pixels) y: Y coordinate (CSS pixels)

server.py
kui_mouse_move(x: float, y: float)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1294

Report an issue with this entry →
kui_network_resources
Declared3.61.7MCP

Get all HTTP resources loaded by the KUI document (images, scripts, etc.).

server.py
kui_network_resources()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1758

Report an issue with this entry →
kui_outer_html
Declared3.61.7MCP

Get the outer HTML markup of the element matching selector. Args: selector: CSS selector, e.g. "#main", ".card:first-child"

server.py
kui_outer_html(selector: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1387

Report an issue with this entry →
kui_page_info
Declared3.61.7MCP

Get KUI page metadata: title, URL, scroll position, viewport size.

server.py
kui_page_info()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1736

Report an issue with this entry →
kui_pause
Declared3.61.7MCP

Pause Lua script execution at the next executed line.

server.py
kui_pause()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1927

Report an issue with this entry →
kui_perf_buffer
Declared3.61.7MCP

Read buffer use, dropped evidence counts, and the suggested lower-cost mode.

server.py
kui_perf_buffer(session_id: str='')

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1042

Report an issue with this entry →
kui_perf_capabilities
Declared3.61.7MCP

Report exact performance schema, modes, limits, and CPU/memory/GPU availability. Availability is explicit: unsupported or failed providers are never returned as a numeric zero. This call does not start recording.

server.py
kui_perf_capabilities()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:730

Report an issue with this entry →
kui_perf_capture_interaction
Declared3.61.7MCP

Record one interaction in a single call and return a compact per-frame summary. Sequence (one WebSocket): optional warm-up action → start recording → wait warmup_ms → perform the input → wait settle_ms → stop. Then reads the frozen recording and returns only frames that did style/layout/paint work, trimmed like kui_perf_record_get(detail="compact"), plus totals. In attribution mode it also returns layout-run nodes grouped by their topology-transfer outcome and the top node_limit layout nodes. The session id is remembered, so kui_perf_frame / kui_perf_hot_nodes / kui_perf_node_history can drill down afterwards. Args: action: click | key | type | none (none = just record warmup_ms+settle_ms). selector: click target; its border-box center is used (overrides x/y). x, y: click position in viewport CSS pixels when no selector is given. key: DOM key name for action="key" (keyDown + keyUp). text: characters for action="type". modifiers: 1=Alt, 2=Ctrl, 4=Meta, 8=Shift. mode: timeline (timing only, lowest overhead) | attribution | deep-trace. warmup_action: perform the same input once before recording, so the recorded pass is not a first-time (cold cache) run. warmup_ms: delay between start and input. settle_ms: delay after input before stopping (and after the warm-up). max_frames: retained-frame cap for this recording. node_limit: top layout nodes listed (attribution modes).

server.py
kui_perf_capture_interaction(action: str='click', selector: str='', x: float=-1.0, y: float=-1.0, key: str='', text: str='', modifiers: int=0, mode: str='attribution', warmup_action: bool=False, warmup_ms: int=200, settle_ms: int=500, max_frames: int=64, node_limit: int=30)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1166

Report an issue with this entry →
kui_perf_export_recording
Declared3.61.7MCP

Export a stopped recording as one bounded, privacy-redacted JSON payload. Args: session_id: Recording id; empty uses the last session. confirm_export: Must be true to assert an explicit user-approved export. max_bytes: UTF-8 payload limit, 1024..4194304 bytes. The engine excludes DOM text, input values, URLs, tokens, selectors, element ids/classes, and stable GPU adapter/engine identifiers. Active recordings must be stopped first so the returned payload is atomic.

server.py
kui_perf_export_recording(session_id: str='', confirm_export: bool=False, max_bytes: int=4 * 1024 * 1024)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1014

Report an issue with this entry →
kui_perf_frame
Declared3.61.7MCP

Read exact phase, work, damage, layer, DOM, and display-list data for one frame. Args: frame_id: Frame id from a recording page. session_id: Recording id; empty uses the last session. detail: full (default, raw protocol frame) | compact (same trimming as kui_perf_record_get).

server.py
kui_perf_frame(frame_id: str, session_id: str='', detail: str='full')

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:855

Report an issue with this entry →
kui_perf_hot_nodes
Declared3.61.7MCP

Rank high-frequency nodes by invalidation, style, layout, paint, or DL work. Attribution mode is required for node-level results. detail="compact" (default) returns each node's identity, non-zero counters and its layoutTopologyTransfer outcome only; detail="full" returns the raw protocol page. min_layout_runs > 0 switches to layout ranking, pages through the recording until nodes fall below the threshold, and adds layoutRunsByTransferOutcome (nodes and layout runs grouped by the node's last topology-transfer outcome). Args: session_id: Recording id; empty uses the last session. sort_by: estimatedCost | dirty | style | layout | paint | displayList | raster (DeepTrace submitted drawable ops; not GPU completion). limit: Maximum nodes returned (1..200; with min_layout_runs, the cap on listed nodes — grouping still covers every qualifying node). detail: compact | full. min_layout_runs: Only nodes whose layout algorithm ran at least this often.

server.py
kui_perf_hot_nodes(session_id: str='', sort_by: str='estimatedCost', limit: int=50, detail: str='compact', min_layout_runs: int=0)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:876

Report an issue with this entry →
kui_perf_insights
Declared3.61.7MCP

Return evidence-backed dirty/style/layout/paint/damage/resource/buffer cards.

server.py
kui_perf_insights(session_id: str='')

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1049

Report an issue with this entry →
kui_perf_node_history
Declared3.61.7MCP

Read ordered dirty events, related update passes, and node totals.

server.py
kui_perf_node_history(performance_node_id: str, session_id: str='', cursor: str='0', max_events: int=200)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:962

Report an issue with this entry →
kui_perf_record_get
Declared3.61.7MCP

Read a retained recording page, including summary, work, and resources. This is an explicit read; the MCP server never polls in the background. Follow hasMore=true using the returned cursor to page through long runs. detail="compact" (default) keeps each frame's timing, non-zero work counters, layout path / sub-phase timing, topology-transfer statistics and a few render fields, and drops per-sample memory-category descriptions; values are not altered. Use detail="full" for the raw protocol payload. Args: session_id: Recording id; empty uses this MCP process's last session. cursor: Return frame ids greater than this cursor (default 0). max_frames: Maximum returned frames for this page (1..512). resource_cursor: Return resource sequences greater than this cursor. max_resource_samples: Maximum resource samples for this page (1..512). detail: compact | full. layout_frames_only: compact only — omit frames that did no layout work (the omitted count is reported as framesOmitted).

server.py
kui_perf_record_get(session_id: str='', cursor: str='0', max_frames: int=120, resource_cursor: str='0', max_resource_samples: int=120, detail: str='compact', layout_frames_only: bool=False)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:816

Report an issue with this entry →
kui_perf_record_start
Declared3.61.7MCP

Explicitly start a bounded fine-grained render recording. The MCP transport opens a new WebSocket for each tool call, so this always requests lifecycle=leased; closing that short-lived socket must not stop the recording. Always finish with kui_perf_record_stop(), then retrieve the retained evidence with kui_perf_record_get(). To measure one interaction (click / key / typing), prefer kui_perf_capture_interaction(): it records, performs the input and stops in a single call, so agent latency between tool calls cannot end the recording. The recording stops by itself when max_duration_ms elapses (stopReason "timeout") or when no tool call touches the session for lease_ttl_ms (stopReason "lease-expired"). Agent tool calls are often tens of seconds apart, so both defaults are 120 s here. Args: mode: summary | timeline | attribution | deep-trace. max_frames: Retained-frame cap (1..4096). max_duration_ms: Automatic duration cap in milliseconds (stopReason "timeout"). resource_interval_ms: CPU/memory sample interval (minimum 250 ms). gpu_sampling: Opt in to Windows PDH GPU sampling; may affect tail latency. lease_ttl_ms: Stop after this long without a session call (stopReason "lease-expired"). node_details: Promote timeline to attribution for per-node evidence. categories: Optional timing/work/render/resources/updatePasses/nodes/trace subset. max_nodes: Attribution node cap; 0 uses the engine default. buffer_size: Requested bounded buffer budget in bytes; 0 uses defaults.

server.py
kui_perf_record_start(mode: str='attribution', max_frames: int=300, max_duration_ms: int=120000, resource_interval_ms: int=1000, gpu_sampling: bool=False, lease_ttl_ms: int=120000, node_details: bool=True, categories: list[str] | None=None, max_nodes: int=0, buffer_size: int=0)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:740

Report an issue with this entry →
kui_perf_record_stop
Declared3.61.7MCP

Explicitly stop a fine-grained recording without discarding its evidence. Args: session_id: Recording id; empty uses the last session started by this MCP process.

server.py
kui_perf_record_stop(session_id: str='')

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:804

Report an issue with this entry →
kui_perf_resolve_node
Declared3.61.7MCP

Resolve a recorded node to a stable session/document-scoped identity. The returned backendNodeId is stable only within the recording's document epoch. Use kui_perf_reveal_node() for a fresh Elements-panel locator; never persist the ephemeral DFS selector.

server.py
kui_perf_resolve_node(performance_node_id: str, session_id: str='')

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:975

Report an issue with this entry →
kui_perf_reveal_node
Declared3.61.7MCP

Reveal a live recorded node in Elements using a fresh DOM locator. Args: performance_node_id: Session-scoped node id returned by hot-nodes. document_epoch: Exact epoch returned by start/resolveNode. session_id: Recording id; empty uses the last session. highlight: Also paint the DevTools highlight overlay. Frozen, detached, or epoch-mismatched nodes return an explicit unavailable result instead of an unsafe stale selector.

server.py
kui_perf_reveal_node(performance_node_id: str, document_epoch: str, session_id: str='', highlight: bool=False)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:989

Report an issue with this entry →
kui_perf_trace
Declared3.61.7MCP

Read one bounded DeepTrace event page. Events contain paint-owner DisplayList ranges, concrete backend replay receipts, operation-type distributions, surface metadata, and present-call receipts. GPU/display completion remains explicitly unsupported unless a backend provider reports it.

server.py
kui_perf_trace(session_id: str='', cursor: str='0', max_events: int=200)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1056

Report an issue with this entry →
kui_performance
Declared3.61.7MCP

Get performance metrics: frame time, layout count, paint count, etc.

server.py
kui_performance()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:665

Report an issue with this entry →
kui_profile_start
Declared3.61.7MCP

Start the Lua script profiler, not a renderer/process CPU profiler.

server.py
kui_profile_start()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1841

Report an issue with this entry →
kui_profile_stop
Declared3.61.7MCP

Stop Lua script profiling and return data marked profileKind=lua.

server.py
kui_profile_stop()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1847

Report an issue with this entry →
kui_reload
Declared3.61.7MCP

Reload the HTML document currently loaded in the KUI window.

server.py
kui_reload()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:652

Report an issue with this entry →
kui_remove_attr
Declared3.61.7MCP

Remove an HTML attribute from the element matching selector. Args: selector: CSS selector identifying the element name: Attribute name to remove (e.g. "disabled", "class")

server.py
kui_remove_attr(selector: str, name: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1645

Report an issue with this entry →
kui_remove_style
Declared3.61.7MCP

Remove an inline CSS property (element.style) from the element matching selector. Works on any element, whether or not it has an HTML id attribute. Args: selector: CSS selector, e.g. "#header", "button.primary" prop: CSS property name to remove (e.g. "color", "display")

server.py
kui_remove_style(selector: str, prop: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1707

Report an issue with this entry →
kui_render_option
Declared3.61.7MCP

Get or set runtime render-optimization toggles (FR-DEVTOOLS-RENDEROBS-004). With no name, returns the current options (retainedDLSkip, retainedSurface, layerPromotion, partialDamage, selectiveLayout, ifcAlternateSlot, layerLimit) with their value/availability. Turning ifcAlternateSlot off releases every IFC result-cache second slot (one laid-out SkParagraph each) immediately. With a name, flips that optimization live (bool options use enabled; layerLimit uses value). Args: name: option to set; empty = list all. enabled: target on/off for boolean options. value: integer value for layerLimit (>=0); ignored for bools.

server.py
kui_render_option(name: str='', enabled: bool=True, value: int=-1)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:704

Report an issue with this entry →
kui_render_stats
Declared3.61.7MCP

Get render-mode stats (FR-DEVTOOLS-RENDEROBS). Returns a summary (framesPainted/framesReused/skipRate, work-fps vs present-fps, layer R/C/S counts, partialDamageEnabled, plus animationSources — KUI-070 idle full-frame diagnosis: the per-source breakdown of what keeps the engine producing a frame every vblank: animationTimerActive (master switch; false = on-demand rendering engaged, frame-skip NOT regressed), activeTransitions, activeAnimations, lottie, view3d, scriptRaf) plus the most recent window per-frame records (mode = full|partial|layer|skipped). Enabling this also turns on the per-frame repaint recording ring. Args: window: number of recent frames to include (max 240).

server.py
kui_render_stats(window: int=120)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:671

Report an issue with this entry →
kui_repaint_rects
Declared3.61.7MCP

Get the rectangles that repainted, incrementally since a frame index. Returns {frames:[{i,mode,overflow,rects:[{x,y,w,h}]}], lastFrame}. Poll with since_frame = lastFrame to stream only new repaints (the data behind the DevTools paint-flashing overlay). Args: since_frame: only return frames with index > this (0 = all recent).

server.py
kui_repaint_rects(since_frame: int=0)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:690

Report an issue with this entry →
kui_resume
Declared3.61.7MCP

Resume Lua script execution after a breakpoint or pause.

server.py
kui_resume()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1933

Report an issue with this entry →
kui_scope
Declared3.61.7MCP

Get local variables and upvalues for a call stack frame. Args: frame_index: 0-based index into the call stack (0 = innermost frame)

server.py
kui_scope(frame_index: int=0)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1968

Report an issue with this entry →
kui_screencast_save
Declared3.61.7MCP

Collect screencast frames for 3 s and save each as a numbered PNG file. Args: output_dir: Directory to write frame_0000.png, frame_0001.png, etc. max_frames: Cap on frames to save (avoids huge dumps, default 100)

server.py
kui_screencast_save(output_dir: str='.', max_frames: int=100)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1789

Report an issue with this entry →
kui_screencast_start
Declared3.61.7MCP

Start continuous frame capture (screencast). KUI will push Page.screencastFrame events for every N-th rendered frame. Collect them with kui_events() or kui_wait_event('Page.screencastFrame'). Args: every_nth_frame: Capture interval — 1 = every frame, 2 = every other, etc. Higher values reduce overhead. Default 2.

server.py
kui_screencast_start(every_nth_frame: int=2)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1766

Report an issue with this entry →
kui_screencast_stop
Declared3.61.7MCP

Stop the running screencast and flush any remaining frames.

server.py
kui_screencast_stop()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1783

Report an issue with this entry →
kui_screenshot
Declared3.61.7MCP

Capture a PNG screenshot of the KUI window and save it to disk. Args: output_path: Destination file path for the PNG. Absolute path recommended; relative = working directory.

server.py
kui_screenshot(output_path: str='kui_screenshot.png')

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:624

Report an issue with this entry →
kui_script_sources
Declared3.61.7MCP

Get all Lua script source files known to the debugger. Returns source names, line counts, and whether each script is currently loaded.

server.py
kui_script_sources()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1994

Report an issue with this entry →
kui_scroll
Declared3.61.7MCP

Scroll at the given coordinates. Args: x: X coordinate of scroll origin (CSS pixels) y: Y coordinate of scroll origin (CSS pixels) delta_x: Horizontal scroll delta in pixels (positive = right) delta_y: Vertical scroll delta in pixels (positive = down, default 120)

server.py
kui_scroll(x: float, y: float, delta_x: float=0.0, delta_y: float=120.0)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1306

Report an issue with this entry →
kui_scroll_info
Declared3.61.7MCP

Get the current document scroll position and total scrollable height.

server.py
kui_scroll_info()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1752

Report an issue with this entry →
kui_scroll_to
Declared3.61.7MCP

Scroll the document to the given vertical position. Args: y: Target scroll Y position in CSS pixels

server.py
kui_scroll_to(y: float)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1742

Report an issue with this entry →
kui_send
Declared3.61.7MCP

Send any CDP command to KUI and return the raw JSON response. Use this for commands not covered by the specialized kui_* tools. Args: method: CDP method, e.g. "DOM.getDocument", "CSS.getMatchedRules" params_json: JSON object string of parameters, e.g. '{"depth": 3}'

server.py
kui_send(method: str, params_json: str='{}')

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:605

Report an issue with this entry →
kui_set_attr
Declared3.61.7MCP

Set an HTML attribute on the element matching selector. Args: selector: CSS selector name: Attribute name (e.g. "class", "data-active", "disabled") value: Attribute value string

server.py
kui_set_attr(selector: str, name: str, value: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1417

Report an issue with this entry →
kui_set_html
Declared3.61.7MCP

Replace the inner HTML of the element matching selector. Args: selector: CSS selector identifying the element html: HTML markup to set as innerHTML

server.py
kui_set_html(selector: str, html: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1634

Report an issue with this entry →
kui_set_style
Declared3.61.7MCP

Inject a CSS rule targeting selector into the document. This uses CSS.addRule which appends a new rule to the document's dynamic stylesheet — it does not overwrite existing rules. Args: selector: CSS selector for the new rule (e.g. "#box", ".item:hover") css_text: CSS declarations without braces (e.g. "color: red; display: none") Example: kui_set_style("#hero", "background: linear-gradient(#f00,#00f); opacity: 0.8")

server.py
kui_set_style(selector: str, css_text: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1441

Report an issue with this entry →
kui_set_style_property
Declared3.61.7MCP

Set a single inline CSS property (element.style) on the element matching selector. Unlike kui_set_style (which injects a new stylesheet rule), this edits the element's own inline style — the highest-priority, single-element override, equivalent to what the DevTools Styles panel's "element.style {}" section edits. Args: selector: CSS selector, e.g. "#header", "button.primary" prop: CSS property name (e.g. "color", "display") value: CSS value (e.g. "red", "flex") important: set the !important priority flag

server.py
kui_set_style_property(selector: str, prop: str, value: str, important: bool=False)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1458

Report an issue with this entry →
kui_set_text
Declared3.61.7MCP

Set the text content of the element matching selector. Args: selector: CSS selector identifying the element text: Plain text to set as the element's text content

server.py
kui_set_text(selector: str, text: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1623

Report an issue with this entry →
kui_status
Declared3.61.7MCP

Return current connection status plus all discoverable KUI targets.

server.py
kui_status()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:544

Report an issue with this entry →
kui_step
Declared3.61.7MCP

Step through Lua script execution. Args: action: "over" — step over the current line (do not enter function calls) "into" — step into function calls "out" — step out of the current function

server.py
kui_step(action: str='over')

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1939

Report an issue with this entry →
kui_storage_clear
Declared3.61.7MCP

Clear all KUI in-memory storage (both localStorage and sessionStorage).

server.py
kui_storage_clear()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:2033

Report an issue with this entry →
kui_storage_get_all
Declared3.61.7MCP

Get all key-value pairs from KUI's in-memory localStorage or sessionStorage. Args: local: True = localStorage (default), False = sessionStorage

server.py
kui_storage_get_all(local: bool=True)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1497

Report an issue with this entry →
kui_storage_remove
Declared3.61.7MCP

Remove a key from KUI's in-memory localStorage or sessionStorage. Args: key: Storage key to remove local: True = localStorage (default), False = sessionStorage

server.py
kui_storage_remove(key: str, local: bool=True)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:2022

Report an issue with this entry →
kui_storage_set
Declared3.61.7MCP

Set a key-value pair in KUI's in-memory localStorage or sessionStorage. Args: key: Storage key string value: Value string to store local: True = localStorage (default), False = sessionStorage

server.py
kui_storage_set(key: str, value: str, local: bool=True)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1507

Report an issue with this entry →
kui_targets
Declared3.61.7MCP

List all live KUI applications/windows discoverable on localhost. Thanks to KUI-039 unified discovery, KUI's /json endpoint aggregates every live target across processes; this scans from port upward and returns the de-duplicated set. Use the printed id/title with kui_connect(target=...). Args: port: Base port to query/scan (default 9229).

server.py
kui_targets(port: int=9229)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:578

Report an issue with this entry →
kui_timeline
Declared3.61.7MCP

Get the performance event timeline (layout, paint, composite events).

server.py
kui_timeline()

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1857

Report an issue with this entry →
kui_type
Declared3.61.7MCP

Type a string into the currently focused KUI element (char-by-char). Args: text: Plain text string to type. No escape sequences.

server.py
kui_type(text: str)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1330

Report an issue with this entry →
kui_wait_event
Declared3.61.7MCP

Block until KUI pushes a specific event, then return it. Useful for waiting for DOM mutations after a click before asserting state. Common event names: "DOM.childNodeInserted", "DOM.childNodeRemoved", "DOM.attributeModified", "DOM.characterDataModified", "Console.messageAdded", "Page.screencastFrame" Args: event_name: CDP event method name to wait for timeout: Maximum seconds to wait (default 5.0)

server.py
kui_wait_event(event_name: str, timeout: float=5.0)

Verification scope

Indexed from current sources. Runtime, combination and platform checks have not been completed for every entry.

tools/kui_devtools_mcp/server.py:1558

Report an issue with this entry →
Browse this reference type →