{
"type": "object",
"properties": {
"task": {
"type": "string",
"description": "REQUIRED: Natural language description of the browser task. Write as a SINGLE LINE without line breaks. Be SPECIFIC - include: (1) Starting URL, (2) What action to take (click, fill, extract, navigate, download), (3) Which elements (button text, field labels), (4) Sample data to use for form filling, (5) What NOT to do if needed. GOOD EXAMPLES: \"Navigate to https://example.com/contact, fill out the contact form with name=John Doe, email=john@example.com, message=Test inquiry, then submit the form\" or \"Go to https://example.com/products, scroll through all pages, extract product name, price, and description for each product, save as products.json\". BAD EXAMPLES: \"Register on the site\" (too vague), \"Get the data\" (what data? from where?)."
},
"model": {
"type": "string",
"enum": [
"google/gemini-3-flash-preview",
"google/gemini-2.5-flash",
"google/gemini-2.5-pro",
"openai/gpt-4o",
"openai/gpt-4o-mini",
"anthropic/claude-sonnet-4"
],
"default": "google/gemini-3-flash-preview",
"description": "AI model for browser automation. Default: 'google/gemini-3-flash-preview'. Use 'google/gemini-2.5-pro' for complex tasks."
},
"agentMode": {
"type": "string",
"enum": [
"dom",
"hybrid",
"cua"
],
"default": "hybrid",
"description": "Agent interaction mode. 'dom': DOM-based tools using CSS selectors (works with any model). 'hybrid': Coordinate-based + DOM tools (DEFAULT, visual interactions). 'cua': Computer Use Agent mode (CUA-specific models only)."
},
"maxSteps": {
"type": "number",
"default": 30,
"description": "Maximum actions the agent can take. Default: 30. Increase for complex multi-page tasks."
},
"systemPrompt": {
"type": "string",
"description": "Role/context for the agent (e.g., \"You are a helpful assistant filling out medical forms\")."
},
"cacheKey": {
"type": "string",
"description": "REQUIRED: Cache identifier string. Generate a unique random 8-character alphanumeric string, e.g. \"a1b2c3d4\" or \"xK9mP2qL\". Must be a hardcoded string literal, NOT a runtime variable. IMPORTANT: Generate a NEW unique value every time you update the code."
},
"disableCache": {
"type": "boolean",
"default": false,
"description": "Whether to bypass caching. Default: false (caching ON). Set to true to force fresh execution."
},
"cacheDurationDays": {
"type": "number",
"default": 7,
"description": "Cache expiration in days. Default: 7. Use 30 for stable sites, 1 for frequently changing sites."
},
"region": {
"type": "string",
"enum": [
"us-west-2",
"us-east-1",
"eu-central-1",
"ap-southeast-1"
],
"default": "us-west-2",
"description": "Server region for browser execution. Default: us-west-2 (Oregon). Options: us-east-1 (Virginia), eu-central-1 (Frankfurt), ap-southeast-1 (Singapore)."
},
"proxies": {
"type": "boolean",
"default": false,
"description": "Enable residential proxies. Default: false. Set to true for sites that block datacenter IPs."
},
"viewportWidth": {
"type": "number",
"default": 1288,
"description": "Browser viewport width in pixels. Default: 1288."
},
"viewportHeight": {
"type": "number",
"default": 711,
"description": "Browser viewport height in pixels. Default: 711."
},
"advancedStealth": {
"type": "boolean",
"default": false,
"description": "Enable advanced anti-detection. Default: false. Set to true for bot-protected sites."
},
"blockAds": {
"type": "boolean",
"default": true,
"description": "Block ads for faster page loads. Default: true."
},
"solveCaptchas": {
"type": "boolean",
"default": true,
"description": "Auto-solve CAPTCHAs when encountered. Default: true."
},
"recordSession": {
"type": "boolean",
"default": true,
"description": "Enable session recording for replay/debugging. Default: true."
},
"filesToUpload": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Public URL to the file to upload."
},
"fileName": {
"type": "string",
"description": "Filename to use when uploading (e.g., \"data.csv\")."
}
}
},
"description": "Files to upload to browser before execution. Just say \"upload filename\" in task - the agent will handle file input clicking. Files must be publicly accessible URLs."
},
"collectionId": {
"type": "string",
"description": "Filestorage collection ID to save output files (extracted data, screenshots, downloads). If not provided, uses default collection."
},
"useContextService": {
"type": "string",
"description": "Saved login context ID (from browser_logins_list) to use pre-authenticated session. NOTE: Cookie injection not yet fully implemented - include login steps in task if authentication is needed."
}
},
"required": [
"task",
"cacheKey"
]
}