WebRun Browser Automation
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Run multi-step tasks in a real Chrome browser: persistent environments, live view, human takeover.
| Author | ai.webrun |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 158 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"WebRun Browser Automation": {
"url": "https://api.webrun.ai/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (21)
browser_taskdestructiveExecute a browser automation task in a real Chrome browser running in a WebRun cloud environment (docs.webrun.ai). Creates a session, runs the task, and auto-terminates. Best for simple one-off tasks that no saved workflow covers. May navigate, fill forms, and submit data on third-party websites as the task requires. Do NOT use this to run or test a saved workflow — use trigger_workflow instead: only a workflow run carries the workflow's own rules, tracking and memory, so a session run will behave differently. If the user says "run it", "run it once", "test it" or "try it" about a workflow, that means trigger_workflow, not this tool.
Parameters:
prompt(required) — string — Task description in natural languagefiles— array — Optional file IDs to attach: ids returned by POST /files/upload, or any file already in one of the user's environment catalogs (GET /environments/:id/files). Max 5 files.model— string — Optional model name or profile key (from global config). Falls back to the configured default.proxy— object — Proxy configuration. WebRun-managed: { source: "WebRun", country: "GB" }. Custom: { source: "custom", type: "http"|"socks", host, port, username?, password? }. Omit for no proxy. Social/messaging automation (WhatsApp, Telegram, Instagram, Facebook, X, LinkedIn, TikTok): prefer country = the country the user is in right now — recommend it and confirm the country with them first; a mismatch is the usual cause of refused logins and sessions that log out repeatedly.debugC— boolean — Enable debug mode on the instance (default: false)secrets— array — Domain-matched secrets [{match, fields}] passed to instance (not stored)webhook— object — Webhook configuration for task completion notificationpolicyId— string — Policy ID to apply automation guardrails (domain restrictions, capability controls, LLM role). Optional.timezone— string — IANA timezone name for the session, e.g. "America/New_York", "Europe/London", "Asia/Tokyo". Date/time-sensitive instructions (e.g. "tomorrow morning", "today", "in 2 hours") are interpreted in this timezone. When omitted, follows the WebRun proxy country if one is set (e.g. country "de" → Europe/Berlin); otherwise the browser default.outputType— string — Response format (default: text)maxDuration— number — Max duration in minutes (default: 20, max: 60)startingUrl— string — Optional starting URLoutputSchema— object — JSON Schema for structured output (required if outputType is structured_json)environmentId— string — Environment ID for persistent profile session. Use list_environments to find available IDs. Without this, a disposable instance is used.reach_out_mode— string — Controls proactive chat-platform messages (Telegram/WhatsApp/Slack/Discord/Teams) to bot users on the same environment. Default: "off" — no messages are sent unless this is set explicitly. "guardrail_only" forwards guardrail prompts (CAPTCHA/2FA/verification) to chat when the API caller is offline. "full" also forwards the task result on completion. Each bot user additionally filters by their own reachOutMode preference.
Hints: read-only no · destructive yes · idempotent no · open-world yes
create_sessiondestructiveCreate a persistent session in a real Chrome browser running in a WebRun cloud environment (docs.webrun.ai), for multi-step interactive work. Returns a sessionId for subsequent commands. With an initial task the browser may act on third-party websites immediately. Do NOT use this to run or test a saved workflow — use trigger_workflow instead: only a workflow run carries the workflow's own rules, tracking and memory, so a session run will behave differently.
Parameters:
mode— string — Session mode (default: default)task— object — Initial task configurationmodel— string — Optional model name or profile key (from global config). Falls back to the configured default.proxy— object — Proxy configuration. WebRun-managed: { source: "WebRun", country: "GB" }. Custom: { source: "custom", type: "http"|"socks", host, port, username?, password? }. Omit for no proxy. Social/messaging automation (WhatsApp, Telegram, Instagram, Facebook, X, LinkedIn, TikTok): prefer country = the country the user is in right now — recommend it and confirm the country with them first; a mismatch is the usual cause of refused logins and sessions that log out repeatedly.debugC— boolean — Enable debug mode on the instance (default: false)policyId— string — Policy ID to apply automation guardrails (domain restrictions, capability controls, LLM role). Optional.timezone— string — IANA timezone name for the session, e.g. "America/New_York", "Europe/London", "Asia/Tokyo". Date/time-sensitive instructions (e.g. "tomorrow morning", "today", "in 2 hours") are interpreted in this timezone. When omitted, follows the WebRun proxy country if one is set (e.g. country "de" → Europe/Berlin); otherwise the browser default.environmentId— string — Environment ID for persistent profile session. Use list_environments to find available IDs. Without this, a disposable instance is used.reach_out_mode— string — Controls proactive chat-platform messages (Telegram/WhatsApp/Slack/Discord/Teams) to bot users on the same environment. Default: "off" — no messages are sent unless this is set explicitly. "guardrail_only" forwards guardrail prompts (CAPTCHA/2FA/verification) to chat when the API caller is offline. "full" also forwards the task result on completion. Each bot user additionally filters by their own reachOutMode preference.
Hints: read-only no · destructive yes · idempotent no · open-world yes
send_taskdestructiveSend a new task to an existing browser session (from create_session). The real Chrome browser may navigate, fill forms, and submit data on third-party websites as the task requires.
Parameters:
sessionId(required) — string — Session ID from create_sessionprompt(required) — string — Task descriptionfiles— array — Optional file IDs to attach: ids returned by POST /files/upload, or any file already in one of the user's environment catalogs (GET /environments/:id/files). Max 5 files.secrets— array — Domain-matched secrets [{match, fields}] (not stored)webhook— object — Webhook configurationoutputType— string — Response formatmaxDuration— number — Max duration for this task in minutes (3-60). Defaults to the value the session was created with.startingUrl— string — URL to navigate to before starting this task (optional)outputSchema— object — JSON Schema for structured output (required if outputType is structured_json)maxInputTokens— number — Max input tokens for this task (100-3000000). Defaults to the value the session was created with.maxOutputTokens— number — Max output tokens for this task (100-1000000). Defaults to the value the session was created with.terminateOnCompletion— boolean — Auto-terminate after task (default: false)
Hints: read-only no · destructive yes · idempotent no · open-world yes
pause_session_taskdestructivePause the task currently running in a browser session. Resume it later with resume_session_task.
Parameters:
sessionId(required) — string — Session ID
Hints: read-only no · destructive yes · idempotent yes · open-world yes
resume_session_taskdestructiveResume a previously paused task in a browser session.
Parameters:
sessionId(required) — string — Session ID
Hints: read-only no · destructive yes · idempotent yes · open-world yes
stop_session_taskdestructiveCancel the task currently running in a browser session, keeping the session alive for new tasks.
Parameters:
sessionId(required) — string — Session ID
Hints: read-only no · destructive yes · idempotent yes · open-world yes
terminate_sessiondestructiveEnd a browser session and free its resources. The session and any running task cannot be resumed afterwards.
Parameters:
sessionId(required) — string — Session ID
Hints: read-only no · destructive yes · idempotent yes · open-world yes
guardrail_responsedestructiveRespond to a guardrail trigger when the browser agent needs human input (credentials, clarification, approval). The response is handed to the live agent, which continues acting on it.
Parameters:
sessionId(required) — string — Session IDfiles— array — Optional file IDs to attach: ids returned by POST /files/upload, or any file already in one of the user's environment catalogs (GET /environments/:id/files). Max 5 files.newState— string — How to continue: 'resume' (default) provides the requested input and continues the task; 'deny' declines the request (response text optional).response— string — Your response/instructions to the agent. Required when newState is 'resume'.
Hints: read-only no · destructive yes · idempotent no · open-world yes
get_task_statusread-onlyCheck the status of a task previously started in a browser session. Use to poll for completion or detect guardrails. Read-only: reports on the task without affecting it.
Parameters:
sessionId(required) — string — Session IDtaskId(required) — string — Task ID to check
Hints: read-only yes · destructive no · idempotent yes · open-world yes
screenshotread-onlyCapture a screenshot of the current browser page in an active session. Returns the screenshot as an inline image. Read-only.
Parameters:
sessionId(required) — string — Session ID
Hints: read-only yes · destructive no · idempotent yes · open-world yes
list_sessionsread-onlyList all active browser sessions for this account. Read-only.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_environmentsread-onlyList available browser environments (persistent profiles) for this account. Returns environment IDs needed for persistent sessions in browser_task or create_session. Read-only. NOTE: workflows and agents use the connection's environment automatically — you rarely need this tool for those, and should not ask the user to choose an environment.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_workflowsread-onlyList the user's saved workflows (prompt-templated browser automations, docs.webrun.ai). Shows each workflow's title, schedule, {{variables}}, and run stats. Scoped to the bound environment when this connection has one; pass scope "all" for every environment. Read-only.
Parameters:
scope— string — 'environment' (default when this connection is bound to one) lists workflows deployed to the bound environment; 'all' lists every workflow on the account.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_workflowread-onlyFull detail of one workflow: prompt template, {{variables}} and their defaults, trigger + schedule, run settings (starting URL, timezone, model, proxy, output contract, files), memory state, and any pending logins. Identify by workflowId or exact title. Read-only; proxy credentials are masked.
Parameters:
title— string — Exact workflow title (case-insensitive) — alternative to workflowIdworkflowId— string — 24-hex workflow id (from list_workflows or create_workflow)
Hints: read-only yes · destructive no · idempotent yes · open-world no
create_workflowCreate a new saved workflow. READINESS BAR: if you could not execute the prompt yourself as a human in a browser — which site, which records, which fields, delivered where, matched to each recipient how — it is not ready; first collect the missing business facts from the user (see the TASK INTERVIEW in the server instructions), then create. Requires title and promptTemplate — write the prompt as a browsing runbook following the Goal / Ground rules / Stages / Output contract in the promptTemplate field description. For tasks that must handle each new item exactly once (new messages, forward once, skip seen), memoryContract is REQUIRED — three plain-English fields addressed to the agent: groundRules, memoryInstruction and itemIdentity (see the field descriptions); the platform wires the tracking itself — never write memory or tracking steps into the prompt. Created in the connection's environment automatically — omit environmentId and never ask the user to choose one. Write the user's concrete values (names, URLs, numbers) directly into the prompt; use {{variables}} ONLY when the user explicitly wants a reusable template with per-run inputs. Everything else is optional and defaults sensibly — do not quiz the user about settings. A supplied schedule is stored as a setting only — the workflow does not run on a timer until deployed via create_agent. To run or TEST the workflow, use trigger_workflow ONLY — never browser_task or create_session.
Parameters:
title(required) — string — Workflow title (shown on the dashboard).promptTemplate(required) — string — The task the browser agent runs, written as a BROWSING RUNBOOK. Structure it as: `Goal:` — one sentence naming the outcome. `Ground rules (every stage, every turn):` — bullet invariants when the task needs them, e.g. work one item at a time — never batch; only record a figure you can read on screen this turn — if it is not shown record it as "not stated", never estimate; keep a running tally and restate it every turn ("captured C items · written R rows"). Then `Stage N — <Site name> (<https://url>)` — one section per website or phase, listing the concrete steps to take in the browser (open/navigate, click, read, capture, compare, flag) in the order a person would do them, each stage ending with `Done when: <verifiable completion condition>`. Finish with `Output —` stating exactly what to produce or deliver once the final tally is met, including what to say when there is no data (never fabricate a row). When a stage delivers per-recipient (message/email each customer), state the MATCHING RULE in that stage — the identifier shared by the source record and the destination recipient (e.g. the customer name exactly as written in the source, matched against the contact name) — and the no-match branch: skip it and report it, never deliver to a similarly-named near-match. Write the user's CONCRETE values (group names, URLs, numbers) directly into the text; use {{variables}} ONLY when the user explicitly wants a reusable template whose inputs change per run. A short single-site task can be just a Goal plus its steps. PURE TASK ONLY — never write memory bookkeeping into the prompt (no "check memory", "record in memory", "store in memory" steps): tracking is authored in memoryContract and WebRun applies it to every run automatically.flow— object — Dashboard flow diagram: { trigger: {kind, phrase}, steps: [{ primary: {label, domain}, verb }] }.model— string — Model profile key. Omit for the account default.proxy— object — Proxy for runs. {source:"WebRun", country?} or {source:"custom", type:"http"|"socks", host, port, username?, password?}. Custom passwords are encrypted at rest and never returned. Social/messaging workflows (WhatsApp, Telegram, Instagram, Facebook, X, LinkedIn, TikTok): set country to the country the user is in right now — recommend it and confirm the country with them first; a mismatch is the usual cause of refused logins and sessions that log out repeatedly, and a scheduled workflow re-hits it every run, so keep the country stable once set.memory— string — The agent's private notebook: shown to it at the start of every run, updated automatically after each run. Seed it ONLY with durable facts the next run must already know — the exact description of a target item (e.g. the specific picture to match), user preferences, known starting state — one short line per fact. Do NOT put task steps here (promptTemplate) or tracking rules here (memoryContract). Most workflows need no seed at all: the agent builds its own notebook as it runs.skills— array — Workflow-scoped skill entries (dashboard shape).trigger— object — How the workflow is meant to be invoked (informational — see notes). Defaults to {type:'manual', source:'manual'}.listType— string — Advanced — defaults automatically ('monitor' when memoryContract is supplied); leave unset.schedule— object — Saved schedule setting. NOTE: record-only — the workflow does NOT run on a timer until deployed as a scheduled agent (dashboard or Telegram bot).timezone— string — IANA timezone for runs of this workflow (e.g. "America/New_York"). Leave unset to follow the proxy country.department— string — Free-text department label (e.g. "inventory").outputType— string — Output contract: 'text' (default), 'structured' (JSON matching outputSchema), 'structured_csv' (rows for the outputSchema column names).destination— object — Result destination chip: { type, sub, description }. Types seen: 'custom-api', 'slack', 'sheets', 'email', 'messaging', 'telegram', 'crm'.startingUrl— string — Page Chrome opens at the start of each run. Omit to let the prompt decide.useCaseTags— array — Categorisation tags.fileDeferred— boolean — Dashboard flag: file selection deferred to run time.outputSchema— ['object', 'array'] — JSON Schema object (outputType "structured") or array of column-name strings (outputType "structured_csv").reachOutMode— ['string', 'null'] — Proactive-chat policy for runs: 'off', 'guardrail_only', or 'full'. Omit (or pass null) to inherit the account default (MCP-initiated runs treat inherit as 'off').wizardPreset— object — Dashboard wizard preset: { technology, useCases[], destination, destinationSub }.environmentId— string — Rarely needed — OMIT it: the connection's bound environment (or your only environment) is applied automatically. Pass only when the user explicitly names a different environment. Never ask the user to choose.memoryEnabled— boolean — Persist per-workflow agent memory across runs (default true).publicDraftId— string — Dashboard public-draft correlation id.requiredFiles— array — Files attached to every run (downloaded before the agent starts). Each fileId must already be in the workflow's own environment (GET /environments/:id/files) — a workflow only uses files from its own environment. originalName and size are filled from that catalog.roiHourlyRate— ['number', 'null'] — Hourly rate for the ROI card.triggerPhrase— string — Natural-language phrase that invokes this workflow in chat.memoryContract— object — How this workflow should behave and what it must remember between runs. REQUIRED whenever the task handles each thing once — new messages, forward once, skip anything already done. Write all three fields in plain English, addressed to the agent; the platform wires the tracking itself. Never write any of this into the prompt: the prompt says what to do, this says how to do it consistently. To explicitly disable tracking for a task that looks like it needs it, pass {mode:'none'}.policyOptedOut— boolean — Opt this workflow out of the environment's default policy.refineMessages— array — Dashboard builder refinement thread rows: [{ role, content }].variableValues— object — ONLY for explicitly dynamic workflows: default values for {{variables}}, keyed by variable name. NOTE: applied only when triggering via MCP trigger_workflow (merged under caller-supplied variables); REST /trigger and bot triggers ignore this field.compatibleTools— array — Sites/tools the workflow uses: [{ name, loginUrl, domain, role }].conciergeNotify— string — Where the concierge announces results (e.g. 'Telegram', 'Slack', 'WhatsApp', 'Microsoft Teams', 'concierge').workListEnabled— boolean — Advanced — set automatically when memoryContract is supplied; leave unset.deployedPolicyId— string — Policy id to run under (must be owned by you).orchestrateFirst— boolean — Discovery mode: one run gathers the WHOLE work list up front, later runs claim one item each.shortDescription— string — One-line summary shown in workflow lists.roiMinutesPerTask— ['number', 'null'] — Minutes saved per run (dashboard ROI card).templateVariables— array — ONLY for explicitly dynamic workflows (the user asked for a reusable template): metadata for the {{variables}} used in promptTemplate (drives the dashboard fill-in UI). Omit entirely when the prompt carries concrete values.
Hints: read-only no · destructive no · idempotent no · open-world no
update_workflowdestructiveUpdate an existing workflow. Supply workflowId plus only the fields to change: prompt, trigger, schedule, run settings, variables, presentation. Object and array fields are replaced whole; pass null to clear an optional field. Renaming via title keeps the slug stable. The stored schedule stays a saved setting — scheduled agents already deployed from this workflow keep their own timing. promptTemplate follows the same Goal / Ground rules / Stages / Output runbook contract as create_workflow (see that field's description). memoryContract is the exception to whole-replace: supplying its three fields updates them while platform tracking details are preserved.
Parameters:
workflowId(required) — string — 24-hex id of the workflow to update (from list_workflows or create_workflow). Required — the title property here is the NEW title for renames, never an identifier.flow— object — Dashboard flow diagram: { trigger: {kind, phrase}, steps: [{ primary: {label, domain}, verb }] }.model— string — Model profile key. Omit for the account default.proxy— object — Proxy for runs. {source:"WebRun", country?} or {source:"custom", type:"http"|"socks", host, port, username?, password?}. Custom passwords are encrypted at rest and never returned. Social/messaging workflows (WhatsApp, Telegram, Instagram, Facebook, X, LinkedIn, TikTok): set country to the country the user is in right now — recommend it and confirm the country with them first; a mismatch is the usual cause of refused logins and sessions that log out repeatedly, and a scheduled workflow re-hits it every run, so keep the country stable once set.title— string — Workflow title (shown on the dashboard).memory— string — The agent's private notebook: shown to it at the start of every run, updated automatically after each run. Seed it ONLY with durable facts the next run must already know — the exact description of a target item (e.g. the specific picture to match), user preferences, known starting state — one short line per fact. Do NOT put task steps here (promptTemplate) or tracking rules here (memoryContract). Most workflows need no seed at all: the agent builds its own notebook as it runs.skills— array — Workflow-scoped skill entries (dashboard shape).trigger— object — How the workflow is meant to be invoked (informational — see notes). Defaults to {type:'manual', source:'manual'}.listType— string — Advanced — defaults automatically ('monitor' when memoryContract is supplied); leave unset.schedule— object — Saved schedule setting. NOTE: record-only — the workflow does NOT run on a timer until deployed as a scheduled agent (dashboard or Telegram bot).timezone— string — IANA timezone for runs of this workflow (e.g. "America/New_York"). Leave unset to follow the proxy country.department— string — Free-text department label (e.g. "inventory").outputType— string — Output contract: 'text' (default), 'structured' (JSON matching outputSchema), 'structured_csv' (rows for the outputSchema column names).destination— object — Result destination chip: { type, sub, description }. Types seen: 'custom-api', 'slack', 'sheets', 'email', 'messaging', 'telegram', 'crm'.startingUrl— string — Page Chrome opens at the start of each run. Omit to let the prompt decide.useCaseTags— array — Categorisation tags.fileDeferred— boolean — Dashboard flag: file selection deferred to run time.outputSchema— ['object', 'array'] — JSON Schema object (outputType "structured") or array of column-name strings (outputType "structured_csv").reachOutMode— ['string', 'null'] — Proactive-chat policy for runs: 'off', 'guardrail_only', or 'full'. Omit (or pass null) to inherit the account default (MCP-initiated runs treat inherit as 'off').wizardPreset— object — Dashboard wizard preset: { technology, useCases[], destination, destinationSub }.environmentId— string — Move the workflow to a different environment you own. Refused while that would leave attached files or scheduled agents behind: pass requiredFiles (files in the new environment, or []) in the same update, and remove its scheduled agents first.memoryEnabled— boolean — Persist per-workflow agent memory across runs (default true).publicDraftId— string — Dashboard public-draft correlation id.requiredFiles— array — Files attached to every run (downloaded before the agent starts). Each fileId must already be in the workflow's own environment (GET /environments/:id/files) — a workflow only uses files from its own environment. originalName and size are filled from that catalog.roiHourlyRate— ['number', 'null'] — Hourly rate for the ROI card.triggerPhrase— string — Natural-language phrase that invokes this workflow in chat.memoryContract— object — How this workflow should behave and what it must remember between runs. REQUIRED whenever the task handles each thing once — new messages, forward once, skip anything already done. Write all three fields in plain English, addressed to the agent; the platform wires the tracking itself. Never write any of this into the prompt: the prompt says what to do, this says how to do it consistently. To explicitly disable tracking for a task that looks like it needs it, pass {mode:'none'}.policyOptedOut— boolean — Opt this workflow out of the environment's default policy.promptTemplate— string — The task the browser agent runs, written as a BROWSING RUNBOOK. Structure it as: `Goal:` — one sentence naming the outcome. `Ground rules (every stage, every turn):` — bullet invariants when the task needs them, e.g. work one item at a time — never batch; only record a figure you can read on screen this turn — if it is not shown record it as "not stated", never estimate; keep a running tally and restate it every turn ("captured C items · written R rows"). Then `Stage N — <Site name> (<https://url>)` — one section per website or phase, listing the concrete steps to take in the browser (open/navigate, click, read, capture, compare, flag) in the order a person would do them, each stage ending with `Done when: <verifiable completion condition>`. Finish with `Output —` stating exactly what to produce or deliver once the final tally is met, including what to say when there is no data (never fabricate a row). When a stage delivers per-recipient (message/email each customer), state the MATCHING RULE in that stage — the identifier shared by the source record and the destination recipient (e.g. the customer name exactly as written in the source, matched against the contact name) — and the no-match branch: skip it and report it, never deliver to a similarly-named near-match. Write the user's CONCRETE values (group names, URLs, numbers) directly into the text; use {{variables}} ONLY when the user explicitly wants a reusable template whose inputs change per run. A short single-site task can be just a Goal plus its steps. PURE TASK ONLY — never write memory bookkeeping into the prompt (no "check memory", "record in memory", "store in memory" steps): tracking is authored in memoryContract and WebRun applies it to every run automatically.refineMessages— array — Dashboard builder refinement thread rows: [{ role, content }].variableValues— object — ONLY for explicitly dynamic workflows: default values for {{variables}}, keyed by variable name. NOTE: applied only when triggering via MCP trigger_workflow (merged under caller-supplied variables); REST /trigger and bot triggers ignore this field.compatibleTools— array — Sites/tools the workflow uses: [{ name, loginUrl, domain, role }].conciergeNotify— string — Where the concierge announces results (e.g. 'Telegram', 'Slack', 'WhatsApp', 'Microsoft Teams', 'concierge').workListEnabled— boolean — Advanced — set automatically when memoryContract is supplied; leave unset.deployedPolicyId— string — Policy id to run under (must be owned by you).orchestrateFirst— boolean — Discovery mode: one run gathers the WHOLE work list up front, later runs claim one item each.shortDescription— string — One-line summary shown in workflow lists.roiMinutesPerTask— ['number', 'null'] — Minutes saved per run (dashboard ROI card).templateVariables— array — ONLY for explicitly dynamic workflows (the user asked for a reusable template): metadata for the {{variables}} used in promptTemplate (drives the dashboard fill-in UI). Omit entirely when the prompt carries concrete values.
Hints: read-only no · destructive yes · idempotent yes · open-world no
trigger_workflowdestructiveRun a workflow now in its deployed environment. This is the ONLY correct way to run or TEST a saved workflow — a run started here carries the workflow's rules, tracking and memory; browser_task/create_session runs do not. When the user says "run it", "run it once", "test it" or "try it" about a workflow, this is the tool they mean. Drives a real Chrome browser: the run may navigate, fill forms, and submit data on third-party websites as the workflow's prompt requires. Pass values for the workflow's {{variables}} in `variables` (stored variableValues defaults fill any gaps). Returns a sessionId — poll get_task_status for the result.
Parameters:
force— boolean — Work-list workflows only: when the list reports complete, re-open it for a fresh full pass.title— string — Exact workflow title (case-insensitive) — alternative to workflowIdvariables— object — Values for the workflow's {{variables}}, keyed by exact variable name. Merged over the workflow's stored variableValues defaults.workflowId— string — 24-hex workflow id
Hints: read-only no · destructive yes · idempotent no · open-world yes
create_agentCreate a scheduled agent — a recurring or one-time automation that runs on a timer in a real Chrome browser. Two modes. WORKFLOW MODE: pass workflowId plus a schedule — the platform copies everything else (prompt, starting URL, output contract, model, proxy, policy, files) from the workflow and bakes your variables into the prompt; results and memory stay centralised on the workflow. STANDALONE MODE: omit workflowId and provide name, prompt (a Goal / Ground rules / Stages / Output browsing runbook — see the prompt field description), and a schedule; the connection's environment is used automatically. Ask the user only what it should do and when it should run, in plain language — pick sensible defaults for everything else and state them; never ask about environments or technical settings. Results are delivered to your connected chat and appear in session history.
Parameters:
schedule(required) — object — When the agent fires. Required.name— string — Agent name. Required standalone; defaults to the workflow title in workflow mode.proxy— object — STANDALONE MODE (workflow mode inherits the workflow proxy instead): Proxy for runs. {source:"WebRun", country?} or {source:"custom", type:"http"|"socks", host, port, username?, password?}. Custom passwords are encrypted at rest and never returned. Social/messaging workflows (WhatsApp, Telegram, Instagram, Facebook, X, LinkedIn, TikTok): set country to the country the user is in right now — recommend it and confirm the country with them first; a mismatch is the usual cause of refused logins and sessions that log out repeatedly, and a scheduled workflow re-hits it every run, so keep the country stable once set.memory— string — STANDALONE MODE: the agent's private notebook, shown to it every run and updated automatically after each run. Seed ONLY durable facts the next run must know (target descriptions, preferences, known state) — one short line each. Task steps belong in prompt, not here. Usually best left empty.prompt— string — STANDALONE MODE (required there): The task the browser agent runs, written as a BROWSING RUNBOOK. Structure it as: `Goal:` — one sentence naming the outcome. `Ground rules (every stage, every turn):` — bullet invariants when the task needs them, e.g. work one item at a time — never batch; only record a figure you can read on screen this turn — if it is not shown record it as "not stated", never estimate; keep a running tally and restate it every turn ("captured C items · written R rows"). Then `Stage N — <Site name> (<https://url>)` — one section per website or phase, listing the concrete steps to take in the browser (open/navigate, click, read, capture, compare, flag) in the order a person would do them, each stage ending with `Done when: <verifiable completion condition>`. Finish with `Output —` stating exactly what to produce or deliver once the final tally is met, including what to say when there is no data (never fabricate a row). When a stage delivers per-recipient (message/email each customer), state the MATCHING RULE in that stage — the identifier shared by the source record and the destination recipient (e.g. the customer name exactly as written in the source, matched against the contact name) — and the no-match branch: skip it and report it, never deliver to a similarly-named near-match. Write the user's CONCRETE values (group names, URLs, numbers) directly into the text; use {{variables}} ONLY when the user explicitly wants a reusable template whose inputs change per run. A short single-site task can be just a Goal plus its steps. PURE TASK ONLY — never write memory bookkeeping into the prompt (no "check memory", "record in memory", "store in memory" steps): tracking is authored in memoryContract and WebRun applies it to every run automatically.expiresAt— string — ISO 8601 date-time after which the agent auto-pauses (recurring schedules).variables— object — WORKFLOW MODE, and only when the workflow's prompt actually contains {{variables}}: values for them, BAKED IN at deploy and reused every run (stored variableValues defaults fill gaps). Every template variable must be covered — an unattended agent cannot ask later. Workflows with concrete prompts need nothing here.outputType— string — STANDALONE MODE: output contract (same rules as create_workflow).workflowId— string — WORKFLOW MODE: 24-hex id of the workflow to deploy (from list_workflows). The prompt, starting URL, output contract, model, proxy, policy, and files are all copied from it.startingUrl— string — STANDALONE MODE: page Chrome opens at the start of each run.outputSchema— ['object', 'array'] — STANDALONE MODE: JSON Schema object (structured) or column-name array (structured_csv).environmentId— string — STANDALONE MODE, rarely needed — OMIT it: the connection-bound environment (or your only one) is applied automatically; never ask the user to choose. Workflow mode always uses the workflow's deployed environment.
Hints: read-only no · destructive no · idempotent no · open-world no
list_agentsread-onlyList the account's scheduled agents (cron deployments): schedule, status, next/last run, and whether each is standalone or deployed from a workflow. Scoped to the bound environment when this connection has one; pass scope "all" for every environment. Read-only.
Parameters:
scope— string — 'environment' (default when bound) lists agents in the bound environment; 'all' lists every agent on the account.
Hints: read-only yes · destructive no · idempotent yes · open-world no
pause_agentdestructivePause an active scheduled agent — it stops firing until resumed. Get agentId from list_agents.
Parameters:
agentId(required) — string — 24-hex agent id (from list_agents or create_agent)
Hints: read-only no · destructive yes · idempotent no · open-world no
resume_agentdestructiveResume a paused scheduled agent — recomputes its next run and reactivates it. A completed work-list agent restarts with a fresh full pass. Refuses if the agent's expiry has passed (extend it on the dashboard first).
Parameters:
agentId(required) — string — 24-hex agent id (from list_agents)
Hints: read-only no · destructive yes · idempotent no · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.