pilot_resize
Set the browser viewport width and height in pixels to simulate device screens and test responsive layouts.
Instructions
Set the browser viewport size in pixels to simulate different screen resolutions. Use when the user wants to test responsive layouts, simulate a mobile or tablet screen, or change the visible area of the page. For multi-viewport screenshots, use pilot_responsive instead.
Parameters:
width: Viewport width in pixels (e.g., 1280 for desktop, 375 for mobile)
height: Viewport height in pixels (e.g., 720 for desktop, 812 for mobile)
Returns: Confirmation with the new viewport dimensions.
Errors: None — any valid pixel dimensions are accepted.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | Viewport width in pixels | |
| height | Yes | Viewport height in pixels |
Implementation Reference
- src/tools/settings.ts:14-40 (handler)Registration of the 'pilot_resize' tool with the MCP server. The handler calls bm.setViewport(width, height) to change the browser viewport size and returns a confirmation message.
export function registerSettingsTools(server: McpServer, bm: BrowserManager) { server.tool( 'pilot_resize', `Set the browser viewport size in pixels to simulate different screen resolutions. Use when the user wants to test responsive layouts, simulate a mobile or tablet screen, or change the visible area of the page. For multi-viewport screenshots, use pilot_responsive instead. Parameters: - width: Viewport width in pixels (e.g., 1280 for desktop, 375 for mobile) - height: Viewport height in pixels (e.g., 720 for desktop, 812 for mobile) Returns: Confirmation with the new viewport dimensions. Errors: None — any valid pixel dimensions are accepted.`, { width: z.number().describe('Viewport width in pixels'), height: z.number().describe('Viewport height in pixels'), }, async ({ width, height }) => { await bm.ensureBrowser(); try { await bm.setViewport(width, height); return { content: [{ type: 'text' as const, text: `Viewport set to ${width}x${height}` }] }; } catch (err) { return { content: [{ type: 'text' as const, text: wrapError(err) }], isError: true }; } } ); - src/tools/settings.ts:27-30 (schema)Zod schema defining the 'width' and 'height' parameters for pilot_resize, both required numbers describing viewport dimensions in pixels.
{ width: z.number().describe('Viewport width in pixels'), height: z.number().describe('Viewport height in pixels'), }, - src/browser-manager.ts:401-404 (helper)The setViewport method on BrowserManager delegates to Playwright's page.setViewportSize() to actually change the viewport dimensions.
// ─── Viewport ────────────────────────────────────────────── async setViewport(width: number, height: number) { await this.getPage().setViewportSize({ width, height }); } - src/tools/register.ts:73-87 (registration)registerAllTools calls registerSettingsTools which registers pilot_resize, and the tool profile system determines whether it is included (full profile only, not in core or standard).
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); }