ARIA snapshot of the page or a scoped element. Returns a tree with refs (e1, e2, ...) and a refs map.
Use refs in interaction tools: selector "e1" or "@e1" to click/fill that element. Output includes URL, title, and YAML tree.
Refs are valid until next snapshot or navigation. interactiveOnly: only interactive elements get refs; omit for content roles (headings, etc.) too.
cursorInteractive: true adds refs for clickable elements without ARIA (e.g. div with cursor:pointer/onclick).
Use with a11y_take-ax-tree-snapshot for full UI analysis.

Omit structural nodes without content.

Include cursor:pointer / onclick elements.

Only interactive elements get refs.

Max tree depth; 0 = root only.

Scope to this element; omit for full page.

Includes the page URL, title, and a YAML-formatted accessibility tree with [ref=e1] etc.

Map of ref id to { role, name?, selector, nth? }. Use selector "e1" or "@e1" in interaction tools.

Combines Chromium AX tree with runtime visual diagnostics (bounding box, visibility, viewport).
Use to detect: elements with role/name but hidden or off-screen; layout/geometry issues; overlap/occlusion (enable checkOcclusion).
When investigating UI/layout or when clicks fail on seemingly visible elements, set checkOcclusion:true—it uses elementFromPoint()
at center+corners to find what is actually on top. boundingBox is from getBoundingClientRect() (viewport coords; layout box only).
selectorHint is best-effort (data-testid/data-selector/id). Use with a11y_take-aria-snapshot for full UI analysis.

Use elementFromPoint to detect what is on top.

Include bounding box and visibility.

ARIA/AX role names to include; omit for default set. Standard roles: ARIA https://w3c.github.io/aria/#role_definitions, Chromium AX https://chromium.googlesource.com/chromium/src/+/main/ui/accessibility/ax_enum_util.cc (e.g. button, heading, staticText, image, main, navigation). Matching is case-insensitive; "text" also matches staticText, "img" matches image.

CSS property names when includeStyles.

Total number of nodes returned by Chromium Accessibility.getFullAXTree before filtering.

Number of DOM-backed AX nodes that passed role filtering before enrichment.

Number of nodes included in the final enriched snapshot output.

List of enriched DOM-backed AX nodes combining accessibility metadata with visual diagnostics.

Unique identifier of the accessibility node within the AX tree.

Chromium backend DOM node identifier used to map AX nodes to DOM elements.

Child AX node ids in the full AX tree (may include nodes not present in the filtered output).

DOM class attribute of the mapped element.

Raw AX description payload associated with the node, if present.

Resolved DOM nodeId from CDP if available; may be null because nodeId is not guaranteed to be stable/resolved.

Frame identifier if the node belongs to an iframe or subframe.

DOM id attribute of the mapped element.

Whether the accessibility node is marked as ignored.

Lowercased DOM tag name of the mapped element (e.g. div, button, input).

Accessible name computed by the browser accessibility engine.

Parent AX node id in the full AX tree. Null if this node is a root.

Additional AX properties exposed by the accessibility tree.

ARIA role of the accessibility node (e.g. button, link, textbox).

Runtime-derived visual information representing how the element is actually rendered.

Height of the element in CSS pixels.

Width of the element in CSS pixels.

X coordinate of the element relative to the viewport.

Y coordinate of the element relative to the viewport.

Bounding box computed at runtime using getBoundingClientRect.

Whether the element intersects the current viewport.

Whether the element is considered visually visible (display, visibility, opacity, and size).

Occlusion detection results. Only present when checkOcclusion=true.

Intersection rect area in CSS pixels squared.

Intersection rect height.

Intersection rect width.

Intersection rect X.

Intersection rect Y.

Intersection box between this element and the occluding element. Null if not occluded or cannot compute.

True if at least one sample point is covered by another element.

Sample points used for occlusion detection (center + corners).

True if elementFromPoint at this point returned a different element that is not a descendant.

Sample point X (viewport coordinates) used for occlusion testing.

Sample point Y (viewport coordinates) used for occlusion testing.

Height of the occluding element bounding box.

Width of the occluding element bounding box.

X coordinate of the occluding element bounding box.

Y coordinate of the occluding element bounding box.

Bounding box of the occluding element (if available).

DOM class of the occluding element (may be null if none).

DOM id of the occluding element (may be null if none).

Tag name of the occluding element.

Best-effort selector hint for the occluding element.

localName id className selectorHint boundingBox

Identity and geometry of the occluding element. Null when not occluded.

samplePoints isOccluded topElement intersection

Best-effort selector hint for targeting this element (prefers data-testid/data-selector/id).

Subset of computed CSS styles for the element as string key-value pairs.

Short preview of rendered text content or aria-label, truncated to the configured maximum length.

Raw AX value payload associated with the node, if present.

axNodeId parentAxNodeId childAxNodeIds role name ignored backendDOMNodeId domNodeId frameId localName id className selectorHint textPreview properties

The document title of the page at the time of the snapshot.

Indicates whether the result set was truncated by an internal safety cap to prevent excessive output size.

The current page URL at the time the AX snapshot was captured.

url title axNodeCount candidateCount enrichedCount truncatedBySafetyCap nodes

Gets the HTML content of the current page.
By default, all <script> tags are removed from the output unless "removeScripts" is explicitly set to "false".

Selector or ref; omit for full document.

The requested HTML content of the page.

Gets the visible text content of the current page.

Truncate after this many characters.

Limit text to this container; omit for full page.

The requested text content of the page.

Saves the current page as a PDF file.

Page size.

Margin (e.g. 1cm).

Background.

Full path of the saved PDF file.

Starts video recording of the browser page.
Recording captures all page interactions until content_stop-recording is called.
Uses Playwright's native screencast API — works in all modes (headless, headed, persistent, CDP attach).
Only supported on Chromium-based browsers.

Name for the video file (without extension). Defaults to "recording".

Directory where the video file will be saved.

Status message.

Wall-clock time (ms since epoch) of the video's first frame. Use this to align video time with other timestamps (logs, network events). A given event's position in the video is `(eventTimestampMs - startTimestamp) / 1000` seconds.

Stops video recording of the browser page and saves the video file.
Must be called after content_start-recording. The video is saved as a WebM file.

Full path of the saved video file.

Takes a screenshot of the current page or a specific element.
Do NOT use for page structure—use ARIA/AX snapshots instead.
Use only for visual verification (design check, visual bug, contrast, layout).
Screenshot is saved to disk; use includeBase64 only when the file cannot be read from the returned path (e.g. remote, container).

Overlay ARIA ref labels.

Annotate headings.

Annotate cursor:pointer elements.

Base64 fallback.

JPEG quality 0–100.

Selector/ref; omit=viewport.

When annotate is true, list of refs and bounding boxes. When selector is set: only annotations overlapping the element, box relative to that element. When fullPage is true: box is document-relative (matches the full-page image). Otherwise: viewport-relative.

Full path of the saved screenshot file.

Image data included only when "includeBase64" input parameter is set to true.

Base64-encoded image data.

MIME type of the image.

Adds a watch expression to be evaluated at every breakpoint hit.
Watch expression results are included in the snapshot's watchResults field.

Examples:
- "user.name"
- "this.state"
- "items.length"
- "JSON.stringify(config)"

Watch expressions are evaluated in the context of the paused frame.

Expression evaluated at every tracepoint hit (e.g. user.name).

The watch expression

Watch expression ID

Status message

Clears snapshots captured by tracepoints, logpoints, and/or exceptionpoints.
Optional `types`: array of `tracepoint`, `logpoint`, `exceptionpoint`. If omitted or empty, clears all.
Optional `probeId`: clear only snapshots for this probe (for tracepoint/logpoint).

Clear only this probe (tracepoint/logpoint).

Clear only these types; omit for all.

Exceptionpoint snapshots cleared

Logpoint snapshots cleared

Status message

Tracepoint snapshots cleared

tracepointCleared logpointCleared exceptionpointCleared message

Removes tracepoints, logpoints, and/or watch expressions. Optional `types`: array of `tracepoint`, `logpoint`, `watches`. If omitted or empty, clears all.

Which probe types to clear: tracepoint, logpoint, watches. If omitted or empty, all are cleared.

Number of logpoints cleared

Status message

Number of tracepoints cleared

Number of watch expressions cleared

tracepointsCleared logpointsCleared watchesCleared message

Retrieves snapshots captured by tracepoints, logpoints, and/or exceptionpoints.
Optional `types`: array of `tracepoint`, `logpoint`, `exceptionpoint`. If omitted or empty, returns all.
Response fields: `tracepointSnapshots`, `logpointSnapshots`, `exceptionpointSnapshots`.
Optional `probeId` filters tracepoint or logpoint snapshots; `fromSequence` and `limit` apply per type.
Output trimming: by default only the top 5 call stack frames are returned, only `local` scope(s) are included, and variables per scope are capped at 20. Override with maxCallStackDepth, includeScopes, maxVariablesPerScope.

Snapshots with sequence > this (polling).

Scope types to include. Default [local] (local only to keep payload small).

Max call stack frames per snapshot. Default 5.

Max variables per scope. Default 20.

Filter by this probe ID (tracepoint/logpoint).

Return only these types; omit for all.

Exceptionpoint snapshots

Async stack trace

Call stack at exception

Exception information

Exception message

Exception name/class

Stack trace string

Exception type

Watch expression results

id probeId timestamp sequenceNumber url lineNumber captureTimeMs callStack

Logpoint snapshots

Result of log expression evaluation

id probeId timestamp sequenceNumber url lineNumber captureTimeMs

Tracepoint snapshots

Async stack trace

Chain of async segments

Frames in this segment

1-based column number

Function name

1-based line number

Original source location

Script URL

Async boundary (Promise.then, setTimeout, etc.)

Call stack with local variables

1-based column number

Function name

1-based line number

Original source location

Variable scopes

Scope name

Scope type (global, local, closure, etc.)

Variables in this scope

Variable name

Variable type

Variable value

V8 script ID

Script URL

functionName url lineNumber scriptId scopes

Time taken to capture snapshot (ms)

1-based column number

Snapshot ID

1-based line number

Original source location

1-based column number

1-based line number

Original identifier name

Original source file path

Probe ID that triggered this snapshot

Monotonic sequence number for ordering

Unix timestamp (ms)

Script URL where snapshot was taken

Watch expression results

Lists tracepoints, logpoints, and/or watch expressions. Optional `types`: array of `tracepoint`, `logpoint`, `watch`. If omitted or empty, returns all.

List only these types; omit for all.

Logpoints

id urlPattern lineNumber logExpression enabled resolvedLocations hitCount

Tracepoints

id urlPattern lineNumber enabled resolvedLocations hitCount

Watch expressions

Sets the exception tracepoint state:
- "none": Don't capture on exceptions
- "uncaught": Capture only on uncaught exceptions
- "all": Capture on all exceptions (caught and uncaught)

When an exception occurs, a snapshot is captured with exception details.

Current state

Status message

Previous state

Puts a logpoint at the specified location.
When the logpoint is hit, the logExpression is evaluated and the result
is captured in the snapshot's logResult field.

Logpoints are lightweight - they only capture the log expression result,
NOT call stack or watch expressions. Use tracepoints for full debug context.

urlPattern matches script URLs (e.g., "app.js"). Auto-escaped, do not add backslashes.

logExpression: a single JavaScript expression (e.g. "user.name", "JSON.stringify({ a, b })", or "{ discountAmount, finalAmount, n }"). Object literals are supported; for maximum compatibility prefer a single variable or JSON.stringify(...).

Returns resolvedLocations: 0 means pattern didn't match any loaded scripts.

1-based column.

Only log when this expression is true.

Hit-count condition (e.g. > 5).

1-based line in script.

JS expression to evaluate and log (e.g. user.name, JSON.stringify({ a, b }), or { x, y }).

Glob pattern for script URL (e.g. **/app.js).

Column number

Condition expression

Hit count condition

Debug point ID

Line number

Log expression

Number of locations where logpoint was resolved

URL pattern

id urlPattern lineNumber logExpression resolvedLocations

Puts a non-blocking tracepoint at the specified location.
When hit, a snapshot of the call stack and local variables is captured
automatically without pausing execution.

The urlPattern matches script URLs. Special characters are auto-escaped.
Examples:
- "app.js" matches scripts containing "app.js"
- "bundle.min.js" matches scripts containing "bundle.min.js"

DO NOT escape characters yourself (e.g., don't use "app\.js").

Returns resolvedLocations: number of scripts where the tracepoint was set.
If 0, the pattern didn't match any loaded scripts.

1-based column.

Only trigger when this expression is true.

Hit count (e.g. == 5, >= 10, % 10 == 0).

1-based line.

Column number

Condition expression

Hit count condition

Tracepoint ID

Line number

Number of locations where tracepoint was resolved

URL pattern

id urlPattern lineNumber resolvedLocations

Removes a tracepoint, logpoint, or watch expression by ID.
`type`: `tracepoint`, `logpoint`, or `watch`. `id`: the probe or watch ID (from list-probes).

Probe or watch ID from list-probes.

Status message

Whether the probe or watch was removed

Resolves a generated/bundled code location to its original source via source maps.
Useful for translating minified stack traces or bundle line numbers to original TypeScript/JavaScript source.

Requires a page with debugging context (debugging is auto-enabled on first use).
Input: generated script URL, line, column (1-based).
Output: original source path, line, column when a source map is available.

1-based column; default 1.

1-based line in generated code.

Generated script URL (bundle).

Column number in original source (1-based)

Line number in original source (1-based)

Original identifier name if available

Whether the location was resolved to original source

Original source file path

Returns the current debugging status including:
- Whether debugging is enabled
- Source map status
- Exceptionpoint state
- Count of tracepoints, logpoints, and watches
- Snapshot statistics

Whether debugging is enabled

Exceptionpoint state (none, uncaught, all)

Whether source maps are loaded

Number of logpoints

Snapshot statistics

Number of tracepoints

Number of watch expressions

enabled hasSourceMaps exceptionBreakpoint tracepointCount logpointCount watchExpressionCount snapshotStats

execute

Batch-execute multiple tool calls in a single request via custom JavaScript. Reduces round-trips and token usage.

**IMPORTANT**
- The code is already run inside an async function. Pass only the body (statements).
  Do NOT wrap in `async function() { ... }` or `async () => { ... }` — that causes a syntax error.
  Write `await callTool(...); return x;` directly.

**IMPORTANT:**
- `page` (Playwright Page) is available in the VM — use it for navigation or `page.evaluate()`.
- Prefer interaction tools with refs (e1, e2 from a11y_take-aria-snapshot); use raw Playwright only as last resort.
- `document`/`window` are not in the VM — use `page.evaluate(() => { ... })` to run code in the browser.
- Use `waitForNavigation: true` on interaction_click when the click navigates.
- After navigation, do not continue with refs from the previous page — take fresh refs with a11y_take-aria-snapshot first.

Bindings:
- await callTool(name, input, returnOutput?): async — always use with await. Returns the tool output for in-code use.
  returnOutput=true also includes it in the response toolOutputs array; false (default) omits it.
  Throws on failure — execution stops at the first error; partial toolOutputs/logs are still returned.
  On failure, failedTool in the response identifies which tool caused the error.
  Max 50 callTool invocations per execution.
- console.log/warn/error: captured in the response logs array.
- sleep(ms): async delay.

Built-ins: Math, JSON, Date, RegExp, Number, String, Boolean, Array, Object, Promise, Map, Set, WeakMap, WeakSet,
           Symbol, Proxy, Reflect, URL, URLSearchParams, TextEncoder/Decoder, structuredClone,
           crypto.randomUUID(), AbortController, setTimeout/clearTimeout.
NOT available: require, import, process, fs, Buffer, fetch.

**Example** — fill form, submit (with navigation wait), then snapshot and screenshot:
  await callTool('interaction_fill', { selector: 'e3', value: 'user@test.com' });
  await callTool('interaction_fill', { selector: 'e5', value: 'secret123' });
  await callTool('interaction_click', { selector: 'e7', waitForNavigation: true });
  // Or with page.locator: await page.locator('button').click();
  // Or with page.evaluate: await page.evaluate(() => document.querySelector('button').click());
  await callTool('a11y_take-aria-snapshot', {}, true);
  await callTool('content_take-screenshot', {}, true);

JavaScript code: the body only (no async function wrapper). Use await callTool(name, input, returnOutput?) and return for result. Do NOT wrap in async function() { ... }.

Wall-clock timeout for the entire execution in ms, including awaited tool calls and sleep (default: 30000, max: 120000).

Error message on failure. Partial toolOutputs/logs are still returned.

Present when a callTool invocation caused the error.

Error message from the failed tool.

Tool name that failed.

Captured console.log/warn/error calls.

Return value of the code (JSON-safe). Undefined on error or when nothing is returned.

Tool outputs where callTool was called with returnOutput=true.

Tool name.

Tool output.

Clicks an element. Accepts selector or ref (e.g. e1, @e1). Set waitForNavigation: true when the click opens a new page — waits for navigation then for network idle so snapshot/screenshot see full content.

CSS selector or ref from a11y snapshot (e.g. e1, @e1).

Wait for element, ms. Default 10000.

Wait for navigation triggered by click (parallel with click). Use when click opens a new page.

Timeout for navigation and for network idle wait (ms). Only when waitForNavigation is true. Default 30000.

Drags an element to a target location. Accepts CSS selectors or refs (e.g. e1, @e1) from the last ARIA snapshot.

CSS selector or ref for the element to drag.

CSS selector or ref for the drop target.

Wait for elements, ms. Default 10000.

Fills out an input field. Accepts a CSS selector or a ref from the last ARIA snapshot (e.g. e1, @e1).

CSS selector or ref from a11y snapshot for the input.

Wait for element, ms. Default 10000.

Hovers an element on the page. Accepts a CSS selector or a ref from the last ARIA snapshot (e.g. e1, @e1).

CSS selector or ref from a11y snapshot.

Wait for element, ms. Default 10000.

Presses a keyboard key with optional "hold" and auto-repeat behavior.

Key facts:
- keyboard.press(key, { delay }) does NOT trigger OS-style auto-repeat.
- Some UI behaviors (especially scrolling) require repeated keydown events.
- Use repeat=true + holdMs to approximate real keyboard holding.

Execution logic:
- If selector is provided, the element is focused first.
- If holdMs is omitted or repeat=false:
  → a single keyboard.press() is executed.
- If holdMs is provided AND repeat=true:
  → keyboard.press() is called repeatedly until holdMs elapses.

Ms between keydown and keyup.

Key name (e.g. Enter, ArrowDown, Space).

Repeat key while holdMs (e.g. for scroll).

Focus this element first; omit for page focus.

Resizes the PAGE VIEWPORT using Playwright viewport emulation (page.setViewportSize).

This affects:
- window.innerWidth / window.innerHeight
- CSS media queries (responsive layouts)
- Layout, rendering and screenshots

Notes:
- This does NOT resize the OS-level browser window.
- Runtime switching to viewport=null (binding to real window size) is not supported by Playwright.
  If you need real window-driven responsive behavior, start the BrowserContext with viewport: null
  and use the window resize tool instead.

Requested viewport configuration.

Requested viewport height (CSS pixels).

Requested viewport width (CSS pixels).

Viewport metrics observed inside the page after resizing.

window.devicePixelRatio after resize.

window.innerHeight after resize (CSS pixels).

window.innerWidth after resize (CSS pixels).

window.outerHeight after resize (CSS pixels).

window.outerWidth after resize (CSS pixels).

innerWidth innerHeight outerWidth outerHeight devicePixelRatio

Resizes the REAL BROWSER WINDOW (OS-level window) for the current page using Chrome DevTools Protocol (CDP).

This tool works best on Chromium-based browsers (Chromium/Chrome/Edge).
It is especially useful in headful sessions when you run with viewport emulation disabled (viewport: null),
so the page layout follows the OS window size.

Important:
- If Playwright viewport emulation is enabled (viewport is NOT null), resizing the OS window may not change page layout.
- On non-Chromium browsers (Firefox/WebKit), CDP is not available and this tool will fail.

Required when state=normal.

When not normal, width/height may be ignored.

Required when state=normal.

Window bounds after resizing.

Window height after resizing.

Window left position after resizing.

Window state after resizing.

Window top position after resizing.

Window width after resizing.

CDP window id for the current target.

Window bounds before resizing.

Window height before resizing.

Window left position before resizing.

Window state before resizing.

Window top position before resizing.

Window width before resizing.

CDP window id for the current target.

Requested window change parameters.

Requested window height (pixels). Null if not provided.

Requested window state.

Requested window width (pixels). Null if not provided.

Page viewport metrics after resizing (helps verify responsive behavior).

window.devicePixelRatio after resizing.

window.innerHeight after resizing (CSS pixels).

window.innerWidth after resizing (CSS pixels).

window.outerHeight after resizing (CSS pixels).

window.outerWidth after resizing (CSS pixels).

Scrolls the page viewport or a specific scrollable element.

Modes:
- 'by': Scrolls by a relative delta (dx/dy) from the current scroll position.
- 'to': Scrolls to an absolute scroll position (x/y).
- 'top': Scrolls to the very top.
- 'bottom': Scrolls to the very bottom.
- 'left': Scrolls to the far left.
- 'right': Scrolls to the far right.

Use this tool to:
- Reveal content below the fold
- Jump to the top/bottom without knowing exact positions
- Bring elements into view before clicking
- Inspect lazy-loaded content that appears on scroll

by=dx,dy; to=x,y; or edge (top/bottom/left/right).

Scrollable container: ref (e.g. from latest <a11y_take-aria-snapshot>), getBy… expression, or CSS. Omit for viewport.

Scroll metrics after the scroll action.

Viewport/container client height after scrolling.

Viewport/container client width after scrolling.

Total scrollable height after scrolling.

Total scrollable width after scrolling.

ScrollLeft after scrolling.

ScrollTop after scrolling.

x y scrollWidth scrollHeight clientWidth clientHeight

Scroll metrics before the scroll action.

Viewport/container client height before scrolling.

Viewport/container client width before scrolling.

Total scrollable height before scrolling.

Total scrollable width before scrolling.

ScrollLeft before scrolling.

ScrollTop before scrolling.

The scroll behavior used.

Whether horizontal scrolling is possible (scrollWidth > clientWidth).

Whether vertical scrolling is possible (scrollHeight > clientHeight).

Whether the scroll position is at the very bottom.

Whether the scroll position is at the far left.

Whether the scroll position is at the far right.

Whether the scroll position is at the very top.

Maximum horizontal scrollLeft (scrollWidth - clientWidth).

Maximum vertical scrollTop (scrollHeight - clientHeight).

The scroll mode used.

The selector of the scroll container if provided; otherwise null (document viewport).

mode selector behavior before after canScrollX canScrollY maxScrollX maxScrollY isAtLeft isAtRight isAtTop isAtBottom

Select an option in a dropdown. Accepts a CSS selector or a ref from the last ARIA snapshot (e.g. e1, @e1).

CSS selector or ref from a11y snapshot for the dropdown.

Wait for element, ms. Default 10000.

Navigates to the previous or next page in history.
- `direction: "back"` — previous page in history.
- `direction: "forward"` — next page in history.

In case of multiple redirects, the navigation will resolve with the response of the last redirect.
If cannot go back/forward, returns empty response.

By default (includeSnapshot: true), an ARIA snapshot with refs is returned. Use `snapshotOptions` for `interactiveOnly` (default false) and `cursorInteractive` (default false), same as a11y_take-aria-snapshot.

When `includeScreenshot: true`, the screenshot is always saved to disk; `screenshotFilePath` is returned. By default `outputPath` is the OS temp dir and `name` is "screenshot" (same as content_take-screenshot). Use `screenshotOptions.includeBase64: true` only when the file cannot be read from the returned path (e.g. remote, container).

Take a screenshot after navigation; saved to disk (default: OS temp dir). Use includeBase64 only when file cannot be read from path.

Return ARIA snapshot with refs.

Options when includeScreenshot is true. Same semantics as <content_take-screenshot> (outputPath/name default to tmp and "screenshot").

Overlay ARIA ref labels on the screenshot. Default: true.

Capture full scrollable page. Default: true.

Include base64 image in response; use only when file cannot be read from path (e.g. remote, container).

Base name for the screenshot file. Default: "screenshot".

Directory to save the screenshot. Default: OS temp dir.

Image format. Default: png.

Options when includeSnapshot is true. Same as <a11y_take-aria-snapshot>.

Include cursor:pointer / onclick elements. Default false.

Only interactive elements get refs. Default false (content roles like headings also included).

Max wait ms. 0=no timeout.

Wait for navigation then for network idle before snapshot/screenshot. Default true.

Timeout for navigation and network idle wait (ms). Only when waitForNavigation is true. Default 30000.

Playwright navigation lifecycle: when the main frame reaches this state. Does not use Playwright networkidle; use waitForNavigation for session network-idle after history navigation.

When includeScreenshot and screenshotOptions.includeBase64 are true: image sent as separate image content part.

Base64-encoded image data.

MIME type of the image.

Contains a boolean stating whether the navigated page was successful (status in the range 200-299) or not.

When includeScreenshot is true: full path of the saved screenshot file.

Contains the status code of the navigated page (e.g., 200 for a success).

Contains the status text of the navigated page (e.g. usually an "OK" for a success).

Contains the URL of the navigated page.

Navigates to the given URL.
**NOTE**: The tool either throws an error or returns a main resource response.
The only exceptions are navigation to `about:blank` or navigation to the same URL with a different hash,
which would succeed and return empty response.

**By default** (`includeSnapshot: true`), an ARIA snapshot with refs is taken after navigation and returned in `output` and `refs`; you can use refs (e1, e2, ...) in interaction tools without calling a11y_take-aria-snapshot separately. Use `snapshotOptions` for `interactiveOnly` (default false) and `cursorInteractive` (default false). Set `includeSnapshot: false` to get only url/status/ok.

When `includeScreenshot: true`, the screenshot is always saved to disk; `screenshotFilePath` is returned. By default `outputPath` is the OS temp dir and `name` is "screenshot" (same as content_take-screenshot). Use `screenshotOptions.includeBase64: true` only when the file cannot be read from the returned path (e.g. remote, container).

Return ARIA snapshot with refs after nav.

Image format. Default: png.

Max wait ms. 0=no timeout.

Playwright navigation lifecycle: when the main frame reaches this state. Does not use Playwright networkidle; use waitForNavigation for session network-idle after navigation.

Base64-encoded image data.

MIME type of the image.

Contains a boolean stating whether the navigated page was successful (status in the range 200-299) or not.

When includeSnapshot is true: page URL, title, and ARIA tree with refs.

When includeSnapshot is true: map of ref id (e1, e2, ...) to role/name/selector for use in interaction tools.

When includeScreenshot is true: full path of the saved screenshot file.

Contains the status code of the navigated page (e.g., 200 for a success).

Contains the status text of the navigated page (e.g. usually an "OK" for a success).

Contains the URL of the navigated page.

Reloads the current page.
In case of multiple redirects, the navigation resolves with the response of the last redirect.
If the reload does not produce a response, returns empty response.

By default (includeSnapshot: true), an ARIA snapshot with refs is returned. Use `snapshotOptions` for `interactiveOnly` (default false) and `cursorInteractive` (default false), same as a11y_take-aria-snapshot.

When `includeScreenshot: true`, the screenshot is saved to disk; `screenshotFilePath` is returned. Default path/name: OS temp dir and "screenshot" (same as content_take-screenshot). Use `screenshotOptions.includeBase64: true` only when the file cannot be read from the path.

Take a screenshot after reload; saved to disk (default: OS temp dir).

Return ARIA snapshot with refs.

Overlay ARIA ref labels on the screenshot. Default: true.

Capture full scrollable page. Default: true.

Include base64 image in response; use only when file cannot be read from path (e.g. remote, container).

Base name for the screenshot file. Default: "screenshot".

Directory to save the screenshot. Default: OS temp dir.

Image format. Default: png.

Options when includeSnapshot is true. Same as <a11y_take-aria-snapshot>.

Include cursor:pointer / onclick elements. Default false.

Only interactive elements get refs. Default false (content roles like headings also included).

Max wait ms.

Wait for reload then for network idle before snapshot/screenshot. Default true.

Timeout for reload and network idle wait (ms). Only when waitForNavigation is true. Default 30000.

Playwright navigation lifecycle: when the main frame reaches this state. Does not use Playwright networkidle; use waitForNavigation for session network-idle after reload.

Base64-encoded image data.

MIME type of the image.

Contains a boolean stating whether the reloaded page was successful (status in the range 200-299) or not.

When includeScreenshot is true: full path of the saved screenshot file.

Contains the status code of the reloaded page (e.g., 200 for a success).

Contains the status text of the reloaded page (e.g. usually an "OK" for a success).

Contains the URL of the reloaded page.

Retrieves console messages/logs from the browser with filtering options.

Keep from start or end when truncating.

Filter by message text.

Incremental: only messages with sequence > this.

Only messages at or after this Unix ms.

Filter by level (this level or higher).

Retrieved console messages.

Console message item.

Location of the console message in the resource.

0-based column number in the resource.

0-based line number in the resource.

URL of the resource.

A monotonically increasing sequence number assigned to each console message.
It reflects the order in which messages were captured and can be used by clients
to retrieve messages incrementally by requesting only those with a higher sequence
number than the last one received.

Text of the console message.

Unix epoch timestamp (in milliseconds) of the console message.

Type of the console message.

Retrieves HTTP requests from the browser with filtering options.

Include request headers in each item. Default false.

Include response body in each item. Default false.

Include response headers in each item. Default false.

Keep from start or end when truncating.

2xx only.

Type filter.

Incremental: only requests with sequence > this.

HTTP status range.

Only requests at or after this Unix ms.

Retrieved HTTP requests.

HTTP request item.

HTTP request body if available.

HTTP request duration in milliseconds. "-1" if not available (no response).

Error message of the HTTP request if failed.

HTTP request headers as key-value pairs. Present when includeRequestHeaders was true.

HTTP request method. Valid values are: GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS

Flag to represent whether the HTTP request successful or failed.
An HTTP request is considered successful only if its status code is 2XX.
Otherwise (non-2XX status code or no response at all because of timeout, network failure, etc ...) it is considered as failed.

HTTP request resource type as it was perceived by the rendering engine.
Valid values are: document,stylesheet,image,media,font,script,texttrack,xhr,fetch,eventsource,websocket,manifest,other

HTTP response.

HTTP response body if available. Present when includeResponseBody was true.

HTTP response headers. Present when includeResponseHeaders was true.

HTTP response status code.

HTTP response status text.

A monotonically increasing sequence number assigned to each HTTP request.
It reflects the order in which requests were captured and can be used by clients
to retrieve requests incrementally by requesting only those with a higher sequence
number than the last one received.

Unix epoch timestamp (in milliseconds) of the HTTP request.

HTTP request url.

url method resourceType timestamp sequenceNumber

Gets the OpenTelemetry trace context (trace id and tracestate) from the live browser page when OTEL is enabled.

The OpenTelemetry compatible trace id of the current session if available.

The W3C tracestate value of the current session if available.

Collects Web Vitals (LCP, INP, CLS, TTFB, FCP) with Google thresholds and recommendations.
Call after navigation or user actions; use waitMs for more stable LCP/CLS/INP.
Some metrics may be unavailable depending on browser and interactions.

Include entry counts and LCP element hint.

Ms to wait before reading (e.g. let LCP settle).

Optional debug details.

Counts of PerformanceEntry types used to compute metrics.

Count of event timing entries.

Count of layout-shift entries.

Count of largest-contentful-paint entries.

Count of navigation entries.

Count of paint entries.

navigation paint lcp layoutShift eventTiming

Best-effort selector hint for the last LCP element (if available).

Tag name of the last LCP element (if available).

Actual wait duration used before reading metrics.

waitMs entries lastLcpSelectorHint lastLcpTagName

Raw metric values (null if unavailable).

Cumulative Layout Shift score.

First Contentful Paint in milliseconds.

Interaction to Next Paint in milliseconds (best-effort approximation).

Largest Contentful Paint in milliseconds.

Time to First Byte in milliseconds.

Notes about metric availability, browser limitations, and interpretation.

Ratings computed from Google thresholds.

CLS rating.

FCP rating.

INP rating.

LCP rating.

Rating based on Google thresholds.

Thresholds used for rating.

Upper bound for the "good" rating.

Lower bound for the "poor" rating.

Unit of the metric.

Metric value (null if unavailable).

TTFB rating.

Recommendations based on the measured values and their ratings.

Recommendations for improving CLS.

True if all Core Web Vitals are rated "good".

Recommendations for improving FCP.

General measurement and debugging notes.

Recommendations for improving INP.

Recommendations for improving LCP.

High-level summary and prioritization guidance.

Recommendations for improving TTFB.

coreWebVitalsPassed summary lcp inp cls ttfb fcp general

Unix epoch timestamp (ms) when the metrics were captured.

Current page title.

Current page URL.

url title timestampMs metrics ratings recommendations notes

Generates new OpenTelemetry compatible trace id and sets it to the current session.

The generated new OpenTelemetry compatible trace id.

Sets or clears the OpenTelemetry trace context. Empty traceId clears the MCP-pinned trace id (new browser traces get random ids). Empty traceState clears tracestate. Non-empty traceState must be valid W3C tracestate (comma-separated key=value list).

Finds React component(s) for a DOM element via React Fiber (best-effort). Give selector or (x,y); we resolve the element,
find __reactFiber$ on it or ancestors, then build the component stack from the host fiber that owns that node.
Fiber is not a public API—results vary by dev/prod build; names can be displayName, wrappers, or minified.
wrappersDetected/wrapperFrames help with memo/forwardRef/context. If hostMapping.strategy is ancestor-fallback,
use a more specific selector or deeper node for better accuracy.

If true, includes a best-effort, truncated props preview for the nearest component.

Maximum characters for props preview (after safe stringification).

Target element; takes precedence over x/y.

Viewport X when selector omitted.

Viewport Y when selector omitted.

DOM hint of the element where fiber pointer was found (target or ancestor).

Whether the initial fiber pointer was found directly on the target element.

Whether we found the exact host fiber for target element (fiber.stateNode === targetEl) via subtree scan.

Mapping strategy used to produce the final stack.

Maximum fiber nodes allowed to scan (safety cap).

Number of fiber nodes scanned during subtree search.

DOM hint of the actual target element.

fiberOnTargetElement anchorDomHint targetDomHint hostFiberMatchedTarget subtreeScanNodesScanned subtreeScanMaxNodes strategy

detected detectionReason fiberKey hostMapping nearestComponent componentStack componentStackText wrappersDetected wrapperFrames notes

selector point found domHint elementPath

Maps a React component instance to the DOM elements it renders (DOM footprint) by traversing the Fiber graph.
Prefer an anchor (anchorSelector or anchorX/anchorY) to target the instance; optionally add a query
(componentName, fileNameHint, lineNumber) to search Fiber. With both, we rank candidates and pick the best match near the anchor.
React DevTools hook gives reliable root discovery (getFiberRoots); without it we fall back to DOM scan for __reactFiber$ (best-effort).
For more reliable roots in a persistent browser, install the React Developer Tools Chrome extension.
Debug source is best-effort and may be missing in some builds.

Anchor selector/ref.

Viewport X when anchorSelector omitted.

Viewport Y when anchorSelector omitted.

File hint.

Ranked candidate matches (best-first).

score nameMatched debugSourceMatched anchorRelated

name displayName debugSource componentStack selection domFootprintCount

name displayName debugSource componentStack selection

tagName id className selectorHint textPreview boundingBox isVisible isInViewport

True if DOM appears to contain React Fiber pointers (__reactFiber$...).

True if __REACT_DEVTOOLS_GLOBAL_HOOK__ looks available.

How roots were discovered.

reactDetected fiberDetected rootDiscovery component candidates elements notes

scenario-add

Adds a new scenario. A scenario is a reusable JS script (like execute) that can call tools via callTool().
Scenarios are stored on disk under the scenarios.json file (project-level by default, or global with scope="global").

Description of what this scenario does.

Unique scenario name (used as key).

Storage scope (default: project).

JavaScript code to execute. Same sandbox as <execute>: use await callTool(name, input, returnOutput?) to invoke tools.

scenario-delete

Deletes a scenario by name.

Name of the scenario to delete.

Storage scope (default: project).

Whether the scenario was found and deleted.

scenario-list

Lists all available scenarios. When scope is omitted, returns scenarios from both project and global scopes (project overrides global for same name).

Filter by scope. Omit to list from both (project overrides global).

scenario-run

Runs a saved scenario by name. Looks up the scenario in project scope first, then global.
The scenario's JS script runs in the same sandbox as execute: callTool(), console, sleep are available.
Scenarios can compose other scenarios via callTool('scenario-run', { name: '...' }).
Max recursion depth: 5.

Name of the scenario to run.

Wall-clock timeout in ms (default: 30000).

scenario-search

Searches scenarios by query across both project and global scopes.
Uses configurable search strategy (SEARCH_STRATEGY or SCENARIO_SEARCH_STRATEGY env var).
Returns matching scenarios ranked by relevance.

Maximum number of results (default: 10).

Search query.

scenario-update

Updates an existing scenario's description and/or script.

New description (omit to keep current).

Name of the scenario to update.

Storage scope (default: project).

New script (omit to keep current).

Clears stubs installed.

- If stubId is provided, clears only that stub.
- If stubId is omitted, clears all stubs for the current session/context.

Remove this stub; omit to clear all.

Number of stubs removed.

Installs a request interceptor stub that can modify outgoing requests before they are sent.

Use cases:
- A/B testing / feature flags (inject headers)
- Security testing (inject malformed headers / payload)
- Edge cases (special characters, large payload)
- Auth simulation (add API keys / tokens in headers)

Notes:
- pattern is a glob matched against the full request URL (picomatch).
- This modifies requests; it does not change responses.
- times limits how many times the interceptor applies (-1 means infinite).

Changes to apply to the request.

Override method (e.g. GET, POST).

URL glob (picomatch).

Max applications; -1 = infinite.

Applied artificial delay in milliseconds.

Whether the stub is enabled.

Stub kind.

Glob pattern.

Unique id of the installed stub.

Max applications (-1 means infinite).

stubId kind pattern enabled delayMs times

Lists currently installed stubs for the active browser context/session.
Useful to debug why certain calls are being mocked/intercepted.

For mock_response: fulfill/abort.

Artificial delay in ms.

Whether stub is enabled.

Stub id.

Stub kind.

Glob pattern (picomatch).

For mock_response: HTTP status (if set).

Max applications (-1 means infinite).

How many times it has been applied.

id kind enabled pattern delayMs times usedCount

Installs a response stub for matching requests using glob patterns (picomatch).

Use cases:
- Offline testing (return 200 with local JSON)
- Error scenarios (force 500/404 or abort with timedout)
- Edge cases (empty data / huge payload / special characters)
- Flaky API testing (chance < 1.0)
- Performance testing (delayMs)

Notes:
- pattern is a glob matched against the full request URL.
- stubs are evaluated in insertion order; first match wins.
- times limits how many times the stub applies (-1 means infinite).

Probability 0–1; omit=always.

URL glob.

Response.

Error code when action=abort.

Max times to apply; -1=infinite.

Applied action.

Apply probability (omit means always).

Whether the stub is enabled.

Stub kind.

Glob pattern.

HTTP status (present when action=fulfill).

Unique id of the installed stub (use it to clear later).

Max applications (-1 means infinite).

stubId kind pattern enabled delayMs times action

Waits until the page is network-idle: in-flight requests <= maxConnections for at least idleTimeMs (server-side tracking, no page globals).
Use before SPAs, screenshots, or AX snapshots for stable results. With long-polling, increase maxConnections or use shorter idleTimeMs.

Network must stay idle for this many ms to resolve.

Idle when in-flight requests <= this.

Polling interval ms.

Max wait ms before failing.

The last observed number of in-flight requests at the moment the tool returned.

Idle duration required for success (milliseconds).

Idle threshold used: in-flight requests must be <= this value.

How long the in-flight request count stayed <= maxConnections right before returning (milliseconds).

Polling interval used to sample the in-flight request count (milliseconds).

Maximum allowed wait time (milliseconds).

Total time waited until the network became idle or the tool timed out (milliseconds).

waitedMs idleTimeMs timeoutMs maxConnections pollIntervalMs finalInFlightRequests observedIdleMs


Korean-law-mcp — [메타] 위 도구로 안 되는 경우. 전문도구(조세심판·관세·헌재·행심·공정위·개인정보위·노동위·학칙·조약·영문법령·용어 등 80+개) 카테고리 검색

찾고 싶은 도구의 의도 또는 카테고리 (예: '공정위', '조약', '용어', '헌재')

Korean-law-mcp — [메타] discover_tools 결과 도구를 프록시 실행. tool_name + params

도구에 전달할 파라미터 객체

실행할 도구 이름 (discover_tools로 확인한 이름)

Korean-law-mcp — [별표] 별표/서식 조회. lawName+'별표N'으로 내용 추출. 금액/기준은 별표에 있는 경우 많음.

별표 번호 (예: '4', '별표4', '제4호'). bylSeq 대체 입력

별표번호 (예: '000300'). 지정 시 해당 별표 파일을 다운로드하여 텍스트로 추출

위임 조문 (예: '제38조', '38'). 조문 동반 질의('관세법 제38조 별표2')의 조문 맥락 — 별표명의 '(제38조 관련)' 표기와 대조해 좁히고, 응답에 위임 관계를 표기

1=별표, 2=서식, 3=부칙별표, 4=부칙서식, 5=전체

법령명 (예: '관세법'). 별표를 바로 지정하려면 '... 별표4' 또는 '... 별표1의2'처럼 함께 입력 가능

별표명으로 좁히기 (예: '운전면허 취소·정지', '과태료'). 번호를 모를 때 사용. 1건으로 좁혀지면 그 별표 본문을 바로 추출

Korean-law-mcp — [통합조회] 18개 도메인 전문 조회. domain+id. full=false(기본) 시 본문 계단식 축약

도메인 선택 (enum 값 참조)

true=본문 전문 그대로. 미지정=이유/전문 섹션 계단식 축약 (판시·요지·주문은 항상 full)

일련번호/ID (search 결과에서 획득)

도메인별 옵션. treaty:{chrClsCd:'010202'(한)/'010203'(영)} english_law:{mst,lawName} prec/constitutional/admin_appeal/interpretation:{caseName}

Korean-law-mcp — [법령조회] 조문 전문 조회. mst/lawId 필수, jo로 특정 조문만 가능 — jo는 '제148조의2' 같은 자연어 조문 표기를 그대로 받는다(권장). 6자리 JO 코드를 직접 쓰려면 조번호 4자리 zero-pad + 의X 2자리: 제10조의2→001002, 제234조의2→023402(234002 아님).

시행일자 (YYYYMMDD 형식)

조문 번호. 자연어 표기 권장 — '제38조'·'제148조의2'를 그대로 넣으면 서버가 변환한다. 6자리 JO 코드 직접 지정 시 조번호 4자리 zero-pad + 의X 2자리: 제38조→003800, 제10조의2→001002, 제234조의2→023402(234002 아님)

법령ID (search_law에서 획득)

법령일련번호 (search_law에서 획득)

Korean-law-mcp — [정밀분석] 검증·분석 4종 통합. mode: verify_citations=텍스트 속 법령 조문·판례 인용('민법 제750조', '대법원 2013다61381' 등)이 실존하는지 법제처 DB 교차검증, LLM 환각 방지 — 판례는 실존불가/미확인 구분(text 필수) | cite_check=판례 생사 확인 — 사건번호로 후속 인용 역추적+변경·폐기 감지, 한국형 Citator(caseNumber 필수) | applicable_law=사건 시점에 시행되던 법령 버전+그 시점 조문+부칙 경과조치, 행위시법 판단(lawName+date 필수, jo 선택) | impact_map=한 조문을 인용한 판례·헌재·해석례·행심·조례 역방향 그래프+mermaid(lawName+jo 필수, jo는 '제103조'·'103조'·JO 6자리 코드 '010300' 모두 수용)

[cite_check 필수] 사건번호 (예: '2013다61381', 문장 포함 가능)

[applicable_law 필수] 기준일 — 행위·계약·처분 시점 (예: '2023-05-10', '20230510')

[cite_check] 후속 인용 상위 판례 본문 정밀 스캔 (기본 true, false면 빠르지만 변경·폐기 감지 생략)

[cite_check] 후속 인용 판례 최대 표시 수 (기본 20)

[impact_map] mermaid 그래프 코드 출력 (기본 true)

[impact_map] 자치법규 인용 검색 포함 (기본 true, false면 전국 조례 팬아웃 생략)

[impact_map 필수, applicable_law 선택] 조문 번호 — 자연어 표기('제103조', '제10조의2')와 6자리 JO 코드('010300', '001002') 모두 수용

[applicable_law·impact_map 필수] 법령명 (예: '민법', '도로교통법')

[verify_citations] 검증할 최대 인용 개수 (기본 15, 많을수록 느림)

분석 유형 (도구 설명의 mode 표 참조)

[verify_citations 필수] 검증할 법률 텍스트 (LLM 답변/계약서 등 조문 인용 포함 문자열)

Korean-law-mcp — [⛓리서치] 다단계 법령 리서치 통합 — 여러 API를 병렬로 엮는 복합 질문 전용. task: full_research=도메인·법령명 불명확한 자연어 질문 폴백(기본값, 예 '음주운전 처벌 기준') | law_system=법률·시행령·시행규칙 3단+위임+별표(예 '관세법 체계') | action_basis=처분·허가의 법적 근거+해석례+판례+행심(예 '영업정지 근거') | dispute_prep=불복·소송 준비, 판례+심판례+도메인 결정례(예 '과세처분 불복') | amendment_track=개정 이력+신구대조+연혁(예 '2023년 개정 뭐 바뀜') | ordinance_compare=조례 전국 비교+상위법 적합성(예 '서울시 주차 조례') | procedure_detail=절차·수수료·별표서식(예 '건축허가 절차') | document_review=계약서·약관 조항 리스크+근거법령(text 필수). scenario(선택): 확장 시나리오 — time_travel(두 시점 본문 diff)·timeline·penalty·action_plan·delegation·impact·compliance·customs·manual. 미지정 시 쿼리에서 자동 감지되며, task별 호환 조합은 scenario 파라미터 설명 참조. 단일 조회로 답이 되면 search_law/get_law_text 쓸 것.

[law_system] 함께 조회할 조문 번호 (예: ['제38조'])

[dispute_prep] 전문 분야 (tax=조세심판, labor=노동위, privacy=개인정보위, competition=공정위). 미지정 시 자동 감지

[time_travel] 비교 시작 시점 YYYYMMDD

[amendment_track] 법령ID (알고 있으면)

[document_review] 최대 분석 조항 수 (기본 15)

[amendment_track] 법령일련번호 (알고 있으면)

[ordinance_compare] 상위 법령명. 미지정 시 자동 검색

자연어 질문/법령명/키워드 (예: '음주운전 처벌 기준', '관세법 체계'). document_review 외 모든 task에서 필수

확장 시나리오. 미지정 시 쿼리에서 자동 감지. task별 호환: law_system=delegation·impact | action_basis=penalty | amendment_track=timeline·time_travel | ordinance_compare=compliance | full_research=customs·action_plan | procedure_detail=manual

delegation impact penalty timeline time_travel compliance customs action_plan manual

리서치 유형 (도구 설명의 task 표 참조). 미지정 시 full_research

[document_review 전용·필수] 검토할 계약서/약관 전문 텍스트

[time_travel] 비교 종료 시점 YYYYMMDD

Korean-law-mcp — [자치법규] 조례 정비 레이더 — 조례가 인용한 근거 상위법령(법률/시행령/시행규칙)을 본문에서 추출하고, 각 상위법의 현행 시행일과 조례 시행일을 대조해 '상위법이 조례 시행 이후 개정됨 → 정비 검토 대상'을 자동 플래그. 조례 담당 공무원의 상위법 개정 추적·조례 정비 판단용. ordinSeq(또는 id)나 ordinanceName 중 하나 지정.

ordinSeq 별칭 — 힌트가 id=로 안내하는 경우 대응

자치법규 일련번호 (search_ordinance 결과의 [번호])

자치법규명 — 지정 시 검색 후 첫 결과 사용 (예: '서울특별시 광진구 주차장 설치 및 관리 조례')

ordinanceName 별칭 — 자연어 조례명으로 검색 (search_law 등 다른 도구와 규약 통일)

Korean-law-mcp — [통합검색] 18개 도메인(판례·해석례·헌재·행심·조세심판·관세·국세청·공정위·개인정보위·노동위·권익위·소청심사·학칙·공사공단·공공기관·조약·영문법령) 통합 검색. domain으로 선택. 판례 본문까지 필요하면 domain='precedent', options.includeText=true, options.detailLimit=N. 세무 관련 국세청 직접 회신 해석은 domain='nts'.

결과 수 (기본20)

도메인 선택 (enum 값 참조)

도메인별 옵션. prec:{court,caseNumber,fromDate,toDate} tax_tribunal:{cls,gana,dpaYd,rslYd} customs:{inq,rpl,gana,explYd} constitutional:{caseNumber} interpretation:{fromDate,toDate} treaty:{cls,natCd,eftYd,concYd}

페이지 (기본1)

검색 키워드

정렬: lasc/ldes/dasc/ddes/nasc/ndes

Korean-law-mcp — [법령검색] 법령명·조례명·행정규칙명 키워드검색 → lawId, mst 획득. 지자체 조례·규칙(자치법규), 훈령·예규·고시(행정규칙)도 검색 — 0건 시 자치법규/행정규칙으로 자동 폴백(예: '광진구 복무조례', '외국환거래규정'). 약칭 자동변환. 제명변경·시행예정 개정 자동 병기. 폐지된 법령·행정규칙은 폐지 사실과 후속(통합) 규정을 자동 안내. 법령·조례·행정규칙 조회 전 식별자 확보용.

최대 결과 개수 (기본 50 — 짧은 법령명 정확매칭 누락 방지)

검색할 법령명 (예: '관세법', 'fta특례법', '화관법')


Clone a Bitbucket repository to your local filesystem using SSH (preferred) or HTTPS.

Provide `repoSlug` and `targetPath` (absolute path). Clones into `targetPath/repoSlug`. SSH keys must be configured; falls back to HTTPS if unavailable.

Repository name/slug to clone. This is the short name of the repository. Example: "project-api"

Directory path where the repository will be cloned. IMPORTANT: Absolute paths are strongly recommended (e.g., "/home/user/projects" or "C:\Users\name\projects"). Relative paths will be resolved relative to the server's working directory, which may not be what you expect. The repository will be cloned into a subdirectory at targetPath/repoSlug. Make sure you have write permissions to this location.

Bitbucket workspace slug containing the repository. If not provided, the tool will use your default workspace (either configured via BITBUCKET_DEFAULT_WORKSPACE or the first workspace in your account). Example: "myteam"

Clone Bitbucket Repository

Delete Bitbucket resources. Returns TOON format by default.

**Output format:** TOON (default) or JSON (`outputFormat: "json"`)

**Common operations:**

1. **Delete branch:** `/repositories/{workspace}/{repo}/refs/branches/{branch_name}`
2. **Delete PR comment:** `/repositories/{workspace}/{repo}/pullrequests/{pr_id}/comments/{comment_id}`
3. **Decline PR:** `/repositories/{workspace}/{repo}/pullrequests/{id}/decline`
4. **Remove PR approval:** `/repositories/{workspace}/{repo}/pullrequests/{id}/approve`
5. **Delete repository:** `/repositories/{workspace}/{repo}` (caution: irreversible)

Note: Most DELETE endpoints return 204 No Content on success.

The `/2.0` prefix is added automatically. API reference: https://developer.atlassian.com/cloud/bitbucket/rest/

JMESPath expression to filter/transform the response. IMPORTANT: Always use this to extract only needed fields and reduce token costs. Examples: "values[*].{name: name, slug: slug}" (extract specific fields), "values[0]" (first result), "values[*].name" (names only). See https://jmespath.org

Output format: "toon" (default, 30-60% fewer tokens) or "json". TOON is optimized for LLMs with tabular arrays and minimal syntax.

The Bitbucket API endpoint path (without base URL). Must start with "/". Examples: "/workspaces", "/repositories/{workspace}/{repo_slug}", "/repositories/{workspace}/{repo_slug}/pullrequests/{id}"

Optional query parameters as key-value pairs. Examples: {"pagelen": "25", "page": "2", "q": "state=\"OPEN\"", "fields": "values.title,values.state"}

Bitbucket DELETE Request

Read any Bitbucket data. Returns TOON format by default (30-60% fewer tokens than JSON).

**IMPORTANT - Cost Optimization:**
- ALWAYS use `jq` param to filter response fields. Unfiltered responses are very expensive!
- Use `pagelen` query param to restrict result count (e.g., `pagelen: "5"`)
- If unsure about available fields, first fetch ONE item with `pagelen: "1"` and NO jq filter to explore the schema, then use jq in subsequent calls

**Schema Discovery Pattern:**
1. First call: `path: "/workspaces", queryParams: {"pagelen": "1"}` (no jq) - explore available fields
2. Then use: `jq: "values[*].{slug: slug, name: name, uuid: uuid}"` - extract only what you need

**Output format:** TOON (default, token-efficient) or JSON (`outputFormat: "json"`)

**Common paths:**
- `/workspaces` - list workspaces
- `/repositories/{workspace}` - list repos in workspace
- `/repositories/{workspace}/{repo}` - get repo details
- `/repositories/{workspace}/{repo}/pullrequests` - list PRs
- `/repositories/{workspace}/{repo}/pullrequests/{id}` - get PR details
- `/repositories/{workspace}/{repo}/pullrequests/{id}/comments` - list PR comments
- `/repositories/{workspace}/{repo}/pullrequests/{id}/diff` - get PR diff
- `/repositories/{workspace}/{repo}/refs/branches` - list branches
- `/repositories/{workspace}/{repo}/commits` - list commits
- `/repositories/{workspace}/{repo}/src/{commit}/{filepath}` - get file content
- `/repositories/{workspace}/{repo}/diff/{source}..{destination}` - compare branches/commits

**Query params:** `pagelen` (page size), `page` (page number), `q` (filter), `sort` (order), `fields` (sparse response)

**Example filters (q param):** `state="OPEN"`, `source.branch.name="feature"`, `title~"bug"`

**JQ examples:** `values[*].slug`, `values[0]`, `values[*].{name: name, uuid: uuid}`

The `/2.0` prefix is added automatically. API reference: https://developer.atlassian.com/cloud/bitbucket/rest/

Bitbucket GET Request

Partially update Bitbucket resources. Returns TOON format by default.

**IMPORTANT - Cost Optimization:** Use `jq` param to filter response fields.

**Output format:** TOON (default) or JSON (`outputFormat: "json"`)

**Common operations:**

1. **Update PR title/description:** `/repositories/{workspace}/{repo}/pullrequests/{id}`
   body: `{"title": "New title", "description": "Updated description"}`

2. **Update PR reviewers:** `/repositories/{workspace}/{repo}/pullrequests/{id}`
   body: `{"reviewers": [{"uuid": "{user-uuid}"}]}`

3. **Update repository properties:** `/repositories/{workspace}/{repo}`
   body: `{"description": "New description"}`

4. **Update comment:** `/repositories/{workspace}/{repo}/pullrequests/{pr_id}/comments/{comment_id}`
   body: `{"content": {"raw": "Updated comment"}}`

The `/2.0` prefix is added automatically. API reference: https://developer.atlassian.com/cloud/bitbucket/rest/

Request body as a JSON object. Structure depends on the endpoint. Example for PR: {"title": "My PR", "source": {"branch": {"name": "feature"}}}

Bitbucket PATCH Request

Create Bitbucket resources. Returns TOON format by default (token-efficient).

**IMPORTANT - Cost Optimization:**
- Use `jq` param to extract only needed fields from response (e.g., `jq: "{id: id, title: title}"`)
- Unfiltered responses include all metadata and are expensive!

**Output format:** TOON (default) or JSON (`outputFormat: "json"`)

**Common operations:**

1. **Create PR:** `/repositories/{workspace}/{repo}/pullrequests`
   body: `{"title": "...", "source": {"branch": {"name": "feature"}}, "destination": {"branch": {"name": "main"}}}`

2. **Add PR comment:** `/repositories/{workspace}/{repo}/pullrequests/{id}/comments`
   body: `{"content": {"raw": "Comment text"}}`

3. **Approve PR:** `/repositories/{workspace}/{repo}/pullrequests/{id}/approve`
   body: `{}`

4. **Request changes:** `/repositories/{workspace}/{repo}/pullrequests/{id}/request-changes`
   body: `{}`

5. **Merge PR:** `/repositories/{workspace}/{repo}/pullrequests/{id}/merge`
   body: `{"merge_strategy": "squash"}` (strategies: merge_commit, squash, fast_forward)

The `/2.0` prefix is added automatically. API reference: https://developer.atlassian.com/cloud/bitbucket/rest/

Bitbucket POST Request

Replace Bitbucket resources (full update). Returns TOON format by default.

**IMPORTANT - Cost Optimization:**
- Use `jq` param to extract only needed fields from response
- Example: `jq: "{uuid: uuid, name: name}"`

**Output format:** TOON (default) or JSON (`outputFormat: "json"`)

**Common operations:**

1. **Update repository:** `/repositories/{workspace}/{repo}`
   body: `{"description": "...", "is_private": true, "has_issues": true}`

2. **Create/update file:** `/repositories/{workspace}/{repo}/src`
   Note: Use multipart form data for file uploads (complex - prefer PATCH for metadata)

3. **Update branch restriction:** `/repositories/{workspace}/{repo}/branch-restrictions/{id}`
   body: `{"kind": "push", "pattern": "main", "users": [{"uuid": "..."}]}`

The `/2.0` prefix is added automatically. API reference: https://developer.atlassian.com/cloud/bitbucket/rest/

Bitbucket PUT Request


Delete a previously ingested file or data from the vector database. Use filePath for files ingested via ingest_file, or source for data ingested via ingest_data. Either filePath or source must be provided.

Absolute path to the file (for ingest_file). Example: "/Users/user/documents/manual.pdf"

Source identifier used in ingest_data. Examples: "https://example.com/page", "clipboard://2024-12-30"

Ingest content as a string, not from a file. Use for: fetched web pages (format: html), copied text (format: text), or markdown strings (format: markdown). The source identifier enables re-ingestion to update existing content. For files on disk, use ingest_file instead.

The content to ingest (text, HTML, or Markdown)

Content format: "text", "html", or "markdown"

Source identifier. For web pages, use the URL (e.g., "https://example.com/page"). For other content, use URL-scheme format: "{type}://{date}" or "{type}://{date}/{detail}". Examples: "clipboard://2024-12-30", "chat://2024-12-30/project-discussion", "note://2024-12-30/meeting".

Ingest a document file (PDF, DOCX, TXT, MD) into the vector database for semantic search. File path must be an absolute path. Supports re-ingestion to update existing documents.

Absolute path to the file to ingest. Example: "/Users/user/documents/manual.pdf"

List all files in BASE_DIR (PDF, DOCX, TXT, MD) and show which are ingested into the vector database. Also lists any other ingested items (web pages, clipboard content, etc.) that are outside BASE_DIR.

Search ingested documents. Your query words are matched exactly (keyword search). Your query meaning is matched semantically (vector search). Preserve specific terms from the user. Add context if the query is ambiguous. Results include score (0 = most relevant, higher = less relevant).

Maximum number of results to return (default: 10). Recommended: 5 for precision, 10 for balance, 20 for broad exploration.

Search query. Include specific terms and add context if needed.

status

Get system status including total documents, total chunks, database size, and configuration information.