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.
Navigate the active tab to a URL.
| Field | Type | Notes |
|---|
url | string (url) | |
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.
| Field | Type | Notes |
|---|
selector? | string (min 1) | |
idx? | number (int) | |
waitMs? | number (int) | |
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.
| Field | Type | Notes |
|---|
selector? | string (min 1) | |
idx? | number (int) | |
text | string | |
append? | boolean | |
Scroll a container or the window by a pixel amount.
| Field | Type | Notes |
|---|
target? | string | |
amount | number (int) | |
Wait for a selector to appear or for a fixed duration.
| Field | Type | Notes |
|---|
selector? | string | |
durationMs? | number (int) | |
Fill form fields identified by selectors, optionally submitting.
| Field | Type | Notes |
|---|
fields | record | |
submitSelector? | string | |
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.
Extract text or attribute values from matching elements.
| Field | Type | Notes |
|---|
selector | string (min 1) | |
attribute? | string | |
all? | boolean | |
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'.
| Field | Type | Notes |
|---|
query | string (min 1) | |
kind? | `"link" | "button" |
Return the page's readable text and metadata.
| Field | Type | Notes |
|---|
readable? | boolean | |
maxChars? | number (int) | |
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.
| Field | Type | Notes |
|---|
prompt | string (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?} | |
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.
| Field | Type | Notes |
|---|
conversationId? | string | |
limit? | number (int) | |
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.
| Field | Type | Notes |
|---|
conversationId? | string | |
sessionToken? | string | |
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.
| Field | Type | Notes |
|---|
sessionToken? | string | |
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.
| Field | Type | Notes |
|---|
enabled? | boolean | |
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.
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.
| Field | Type | Notes |
|---|
conversationId | string | |
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.
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.
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}.
| Field | Type | Notes |
|---|
name | string (min 1, max 120) | |
domain | string (min 1, max 253) | |
body | string (min 1, max 64000) | |
id? | string (uuid) | |
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}]}.
| Field | Type | Notes |
|---|
domain? | string (min 1, max 253) | |
Fetch one Procedure by id, including its YAML body. Use list_procedures first to discover ids.
| Field | Type | Notes |
|---|
id | string (min 1) | |
Delete a Procedure by id. Returns {deleted: boolean} — false if no such id exists.
| Field | Type | Notes |
|---|
id | string (min 1) | |
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?}.
| Field | Type | Notes |
|---|
id | string (min 1) | |
prompt | string (min 1) | |
modelId? | string | |
newChat? | boolean | |
max_steps? | number (int) | |
tier? | `"minimal" | "standard" |
conversationId? | string | |
tabFocus? | object {sessionId?, tabId?, url?} | |
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}.
| Field | Type | Notes |
|---|
source | string (min 1, max 128000) | |
id? | string (uuid) | |
List saved SKILL.md procedures. Returns metadata only (no body) for compactness. Use get_skill to fetch a specific procedure's source.
Fetch one SKILL.md procedure by id, including its full canonical source (frontmatter + body, with the local signature applied).
| Field | Type | Notes |
|---|
id | string (min 1) | |
Delete a SKILL.md procedure by id. Returns {deleted: boolean}.
| Field | Type | Notes |
|---|
id | string (min 1) | |
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.
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.
| Field | Type | Notes |
|---|
tunnel | string (min 1) | |
Reload the user's Enquire extension (service worker + offscreen). Useful during development to pick up new builds without manually clicking reload in chrome://extensions.