pilot_close
Close the browser instance and release resources to end the browsing session or prepare for a new one.
Instructions
Close the browser instance and release all associated resources. Use when the user wants to end the browsing session, clean up after completing a task, or start fresh with a new browser session.
Parameters: (none)
Returns: Confirmation that the browser was closed.
Errors:
"No browser to close": No browser session is currently running. Safe to ignore.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/settings.ts:347-367 (registration)Registration of the 'pilot_close' tool via server.tool() with empty schema and handler that calls bm.close().
server.tool( 'pilot_close', `Close the browser instance and release all associated resources. Use when the user wants to end the browsing session, clean up after completing a task, or start fresh with a new browser session. Parameters: (none) Returns: Confirmation that the browser was closed. Errors: - "No browser to close": No browser session is currently running. Safe to ignore.`, {}, async () => { try { await bm.close(); return { content: [{ type: 'text' as const, text: 'Browser closed.' }] }; } catch (err) { return { content: [{ type: 'text' as const, text: wrapError(err) }], isError: true }; } } ); - src/tools/settings.ts:359-367 (handler)Handler function for 'pilot_close': calls bm.close() and returns 'Browser closed.' or wraps errors.
async () => { try { await bm.close(); return { content: [{ type: 'text' as const, text: 'Browser closed.' }] }; } catch (err) { return { content: [{ type: 'text' as const, text: wrapError(err) }], isError: true }; } } ); - src/tools/settings.ts:358-358 (schema)Empty schema object for 'pilot_close' (no parameters).
{}, - src/tools/register.ts:73-87 (registration)registerAllTools calls registerSettingsTools which registers pilot_close.
export function registerAllTools(server: McpServer, bm: BrowserManager, profile: ToolProfile = 'full'): void { const allowed = PROFILE_TOOLS[profile]; const effectiveServer = allowed ? createFilteredServer(server, allowed) : server; registerNavigationTools(effectiveServer, bm); registerSnapshotTools(effectiveServer, bm); registerInteractionTools(effectiveServer, bm); registerPageTools(effectiveServer, bm); registerInspectionTools(effectiveServer, bm); registerVisualTools(effectiveServer, bm); registerTabTools(effectiveServer, bm); registerSettingsTools(effectiveServer, bm); registerIframeTools(effectiveServer, bm); registerAutomationTools(effectiveServer, bm); } - src/errors.ts:6-15 (helper)wrapError helper used by the pilot_close handler to format error messages.
export function wrapError(err: any): string { const msg = err.message || String(err); // Timeout errors if (err.name === 'TimeoutError' || msg.includes('Timeout') || msg.includes('timeout')) { if (msg.includes('locator.click') || msg.includes('locator.fill') || msg.includes('locator.hover')) { return 'Element not found or not interactable within timeout. Check your selector or run pilot_snapshot for fresh refs.'; } if (msg.includes('page.goto') || msg.includes('Navigation')) { return 'Page navigation timed out. The URL may be unreachable or the page may be loading slowly.';