Enquire docs
    Enquire docs
    Getting startedUser guide
    ArchitectureBrowser toolsProcedures
    Claude Code integrationExtension guide
    DeploymentRoadmapBenchmarks
    Concepts

    Browser tools

    Auto-generated reference for the 31 MCP tools the bridge exposes — input shape, constraints, and descriptions.

    Every tool below is exposed by the Enquire bridge and surfaces in your MCP client's tool catalog as enquire__<name>. Tools are grouped by category; within each category, ordering matches the canonical registration order.

    Bridge transport: HTTP MCP at https://bridge.enqr.dev/mcp. WebSocket tunnel from extension to bridge handles execution. See Architecture for the full request lifecycle.

    Navigation

    Edit on GitHub

    Architecture

    System design, tiered router, procedure mode, trust boundaries.

    Procedures

    Save browsing recipes as YAML procedures and replay them. CRUD + one-shot run via MCP.

    On this page

    NavigationnavigateDOM interactionclicktypescrollwaitfill_formPage analysispage_digestextractfindread_pageAgentic chatchatget_session_logget_agent_stateget_planSide-panel controltoggle_debugopen_historyselect_history_entryTab managementlist_session_tabslist_chrome_tabsProcedures (v0 — free-form)save_procedurelist_proceduresget_proceduredelete_procedurerun_procedureSKILL.md (v1 — typed + Ed25519-signed)save_skill_mdlist_skillsget_skilldelete_skillTunnel metalist_tunnelsselect_tunnelUtilityreload_extension

    navigate

    Navigate the active tab to a URL.

    Input

    FieldTypeNotes
    urlstring (url)

    DOM interaction

    click

    Click a DOM element. Pass either selector (CSS) or idx (a stable index from page_digest or find). Prefer idx — it's stable across DOM rewrites and skips selector-building entirely.

    Input

    FieldTypeNotes
    selector?string (min 1)
    idx?number (int)
    waitMs?number (int)

    type

    Type text into an input element. Pass either selector (CSS) or idx (from page_digest or find). Set append: true to keep the existing value.

    Input

    FieldTypeNotes
    selector?string (min 1)
    idx?number (int)
    textstring
    append?boolean

    scroll

    Scroll a container or the window by a pixel amount.

    Input

    FieldTypeNotes
    target?string
    amountnumber (int)

    wait

    Wait for a selector to appear or for a fixed duration.

    Input

    FieldTypeNotes
    selector?string
    durationMs?number (int)

    fill_form

    Fill form fields identified by selectors, optionally submitting.

    Input

    FieldTypeNotes
    fieldsrecord
    submitSelector?string

    Page analysis

    page_digest

    Reader-mode digest of the active tab — title, headings, top clickable actions, and forms — each entry tagged with a stable idx. Use this instead of read_page when you need to act on the page; output is bounded (~400 tokens) and the idx values feed click/type/find_and_click. Building the digest also refreshes the per-session page index that the idx-aware tools resolve against.

    Input

    No arguments.

    extract

    Extract text or attribute values from matching elements.

    Input

    FieldTypeNotes
    selectorstring (min 1)
    attribute?string
    all?boolean

    find

    Search the page for elements whose visible text matches query. Returns up to 10 ranked matches as {idx, role, text}. Pass the idx straight to click/type — no selector reasoning needed. Optional kind filters by element role: 'link', 'button', 'input', 'heading', or 'any'.

    Input

    FieldTypeNotes
    querystring (min 1)
    kind?`"link""button"

    read_page

    Return the page's readable text and metadata.

    Input

    FieldTypeNotes
    readable?boolean
    maxChars?number (int)

    Agentic chat

    chat

    The primary action. Runs an agentic chat in the user's side panel using the configured local/cloud LLM. Optional inline configuration absorbs the side-panel controls: pass newChat: true to start fresh, modelId to override the model for this turn, tabFocus to switch the active tab before running, conversationId to thread continuation. Returns the final assistant message + conversationId. Lands in the side panel as a live conversation; tail with get_session_log / get_agent_state.

    Input

    FieldTypeNotes
    promptstring (min 1)
    system?string
    max_steps?number (int)
    tier?`"minimal""standard"
    tools?array
    model?string
    modelId?string
    conversationId?string
    newChat?boolean
    tabFocus?object {sessionId?, tabId?, url?}

    get_session_log

    Read recent agent telemetry (LLM turns + tool executions) from the extension's rolling 500-entry session log. Optional conversationId scopes to one chat; limit caps the response. Inspect-only — no permission prompt. Use this from an external MCP client to tail what the agent is doing.

    Input

    FieldTypeNotes
    conversationId?string
    limit?number (int)

    get_agent_state

    Snapshot of the agent's FSM state: mode, plan, progress ({done,total}), recentToolCalls (last 5), retryAttempts, and pageIndexed. Polls cheaply — call repeatedly to monitor a long-running chat. Returns the same shape the side-panel AgentStateBar reads.

    Input

    FieldTypeNotes
    conversationId?string
    sessionToken?string

    get_plan

    Return the formatted plan text (✓ 1. … ○ 2. …) plus the active mode for a session. Cheaper than get_agent_state when you only need the plan. Inspect-only.

    Input

    FieldTypeNotes
    sessionToken?string

    Side-panel control

    toggle_debug

    Flip the side-panel's debug mode (every tool step rendered with input/result JSON). Pass enabled: true|false to set explicitly, or omit to toggle. Requires the side panel to be open.

    Input

    FieldTypeNotes
    enabled?boolean

    open_history

    Open the side-panel's history dropdown. The user sees side-panel + MCP-originated chats merged, with LIVE pills for in-flight runs. Useful when prompting the user to pick a prior conversation. Requires the side panel to be open.

    Input

    No arguments.

    select_history_entry

    Load a specific past conversation into the side panel for the user to review. Pass the conversationId from any prior chat (returned by chat, visible in get_session_log). Use chat({conversationId}) to continue it instead.

    Input

    FieldTypeNotes
    conversationIdstring

    Tab management

    list_session_tabs

    List the tabs currently in the agent's session — each with sessionId, url, title, isActive. Pass a sessionId from this list to chat({tabFocus: {sessionId}}) to switch the agent's active tab.

    Input

    No arguments.

    list_chrome_tabs

    List every open Chrome tab — each with tabId, url, title, active, windowId. Pass a tabId to chat({tabFocus: {tabId}}) to adopt that tab into the agent's session.

    Input

    No arguments.

    Procedures (v0 — free-form)

    save_procedure

    Save a free-form Enquire Procedure (YAML body, no strict schema). If id is supplied, updates that procedure; if a procedure with the same name+domain already exists, updates it in place; otherwise creates a new one. Procedures are local to the user's extension and replayable as system primers in enquire__chat. Returns {id, contentHash, created}.

    Input

    FieldTypeNotes
    namestring (min 1, max 120)
    domainstring (min 1, max 253)
    bodystring (min 1, max 64000)
    id?string (uuid)

    list_procedures

    List saved Procedures, optionally filtered to one domain (e.g. 'amazon.co.jp'). Body is omitted for compactness — call get_procedure with the returned id to fetch a body. Returns {procedures: [{id, name, domain, contentHash, lastUsedAt, totalRuns, successRate, updatedAt}]}.

    Input

    FieldTypeNotes
    domain?string (min 1, max 253)

    get_procedure

    Fetch one Procedure by id, including its YAML body. Use list_procedures first to discover ids.

    Input

    FieldTypeNotes
    idstring (min 1)

    delete_procedure

    Delete a Procedure by id. Returns {deleted: boolean} — false if no such id exists.

    Input

    FieldTypeNotes
    idstring (min 1)

    run_procedure

    Run a saved Procedure as a one-shot agent invocation. Loads the procedure body as the system primer, runs prompt through the configured side-panel agent, and increments the procedure's totalRuns / successRate on completion. Accepts the same optional chat-time controls as chat (modelId, newChat, max_steps, tier, conversationId, tabFocus). Returns {procedureId, procedureName, conversationId, finalText, cost?}.

    Input

    FieldTypeNotes
    idstring (min 1)
    promptstring (min 1)
    modelId?string
    newChat?boolean
    max_steps?number (int)
    tier?`"minimal""standard"
    conversationId?string
    tabFocus?object {sessionId?, tabId?, url?}

    SKILL.md (v1 — typed + Ed25519-signed)

    save_skill_md

    Save a typed + Ed25519-signed SKILL.md procedure. The source is parsed against the v1-locked schema (name, version, site_hash, preconditions, steps[]); the extension then signs the canonical text with the user's local private key and stores it. Gated: requires the user to enable Settings → Allow MCP-driven SKILL.md saves first — otherwise this tool returns an error explaining how to enable it. Returns {id, contentHash, name, version, signed: true}.

    Input

    FieldTypeNotes
    sourcestring (min 1, max 128000)
    id?string (uuid)

    list_skills

    List saved SKILL.md procedures. Returns metadata only (no body) for compactness. Use get_skill to fetch a specific procedure's source.

    Input

    No arguments.

    get_skill

    Fetch one SKILL.md procedure by id, including its full canonical source (frontmatter + body, with the local signature applied).

    Input

    FieldTypeNotes
    idstring (min 1)

    delete_skill

    Delete a SKILL.md procedure by id. Returns {deleted: boolean}.

    Input

    FieldTypeNotes
    idstring (min 1)

    Tunnel meta

    list_tunnels

    List the live extension tunnels for your account — one per signed-in browser/profile. Returns {tunnels: [{id, registeredAt, label?, isCurrent}]} where isCurrent is the tunnel that would receive the next tool call. Pair with select_tunnel to switch.

    Input

    No arguments.

    select_tunnel

    Pin every subsequent tool call in this MCP session to a specific extension tunnel. Pass a tunnel value from list_tunnels — its id, nickname, or profile email. Static alternative: set the X-Enquire-Tunnel request header on the MCP client.

    Input

    FieldTypeNotes
    tunnelstring (min 1)

    Utility

    reload_extension

    Reload the user's Enquire extension (service worker + offscreen). Useful during development to pick up new builds without manually clicking reload in chrome://extensions.

    Input

    No arguments.