browser_file_upload
Uploads files from a browser to enable agentic automation and control within the framework.
Instructions
browser file upload
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/browser_tools.js:596-645 (handler)browserFileUpload function: main handler that finds a file input on the page, resolves paths, checks existence, and uploads files using Playwright's setInputFiles.
async function browserFileUpload(paths) { try { if (!paths || !Array.isArray(paths)) { return { success: false, message: 'File paths array is required' }; } const page = await getPage(); // Find file input const fileInput = await page.$('input[type="file"]'); if (!fileInput) { return { success: false, message: 'No file input found on page' }; } // Resolve paths const resolvedPaths = paths.map(p => path.resolve(p)); // Check if files exist for (const filePath of resolvedPaths) { if (!fs.existsSync(filePath)) { return { success: false, message: `File not found: ${filePath}` }; } } // Upload files await fileInput.setInputFiles(resolvedPaths); return { success: true, message: `Uploaded ${paths.length} file(s)`, paths: resolvedPaths }; } catch (error) { logger.error(`Error uploading files: ${error.message}`); return { success: false, message: error.message }; } } - src/mcp/server.js:127-136 (registration)Tool registration in MCP server: adds 'browser_file_upload' to the browserExtras list with a minimal input schema.
const browserExtras = [ { n:'browser_navigate_back' }, { n:'browser_navigate_forward' }, { n:'browser_hover' }, { n:'browser_drag' }, { n:'browser_select_option' }, { n:'browser_press_key' }, { n:'browser_snapshot' }, { n:'browser_console_messages' }, { n:'browser_network_requests' }, { n:'browser_tab_list' }, { n:'browser_tab_new' }, { n:'browser_tab_select' }, { n:'browser_tab_close' }, { n:'browser_file_upload' }, { n:'browser_wait' }, { n:'browser_wait_for' }, { n:'browser_resize' }, { n:'browser_handle_dialog' } ]; for (const b of browserExtras) { tools.push({ name: b.n, description: b.n.replace(/_/g,' '), inputSchema: { type:'object', properties:{} } }); } - src/mcp/server.js:287-287 (registration)Tool call dispatch: routes 'browser_file_upload' to browserTools.browserFileUpload(args.paths).
case 'browser_file_upload': data = await browserTools.browserFileUpload(args.paths); break; - src/tools/browser_tools.js:91-100 (helper)getPage helper function: retrieves or creates the current browser page used by browserFileUpload.
async function getPage() { if (!page || page.isClosed()) { const browser = await getBrowser(); if (!context) { context = await browser.newContext(); } page = await context.newPage(); } return page; } - src/tools/browser_tools.js:1154-1154 (helper)Exports: browserFileUpload is exported from the browser_tools module.
browserFileUpload,