Skip to main content
Glama

Robot Actions — Remote Device Control

Webpage fill form

webpage_fill_form

Fill SEVERAL fields of a form in one call on the device browser — the batch form of webpage_type, and the counterpart to Playwright MCP's browser_fill_form. Works on BOTH iOS Safari and Android Chrome. Fields are filled IN ORDER inside a single browser session, which is what makes this different from calling webpage_type N times: order-dependent forms (a country select that repopulates the state list, an autocomplete that rewrites the next field) behave the way they do for a real person, and you pay one round trip instead of N. Each field takes the same target shape as webpage_type — a CSS selector or a ref from webpage_snapshot — plus text, and an optional per-field clear. On iOS each field is typed on the DEVICE keyboard so the page receives real trusted keystrokes; where that is unavailable it falls back to setting .value via the native setter and dispatching bubbling input/change (isTrusted:false), reporting via and fallbackReason PER FIELD so a degraded field is never hidden by its neighbours succeeding. exact:false on a field means the keystrokes landed but the component rewrote the value as you typed (masks, autocompletes) — that is a success, not a failure. Stops at the first failure by default, because a form is usually order-dependent and filling past a field that did not take produces a state no one asked for; pass continueOnError:true to attempt every field anyway, which is what you want when diagnosing WHICH selectors are stale. This does NOT submit the form — follow it with webpage_press_key("Enter") or webpage_click on the submit control. ONE CROSS-PLATFORM TRAP, measured on device: change fires differently. Android dispatches change on every field. iOS fires it only on a real BLUR, and the LAST field still holds focus when this returns — so its change has NOT fired, and a form that validates on change will not have seen the final field. Follow with webpage_press_key("Tab") or a click elsewhere if that matters. Also on iOS, a field filled with clear:true emits one isTrusted:false input carrying the empty value (the wipe) before the trusted keystrokes.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
udidYesDevice UDID / serial (iOS or Android)
clearNoDefault for every field that does not set its own `clear` (default: false)
fieldsYesFields to fill, in the order they should be filled
pageIdNoTarget page/tab id — auto-picked when omitted
socketNoAndroid only: abstract unix socket name (default: chrome_devtools_remote)
requireNoSet to "native" to fail a field loudly when the device keyboard is unavailable, instead of silently setting .value (isTrusted:false). iOS only.
continueOnErrorNoAttempt every field even after one fails, instead of stopping at the first failure. Use it to find out which selectors are stale in one round trip; leave it off for order-dependent forms.
platformVersionNoIgnored (kept for compatibility)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false; the description adds substantial behavior beyond them — in-order filling, trusted device keystrokes with a isTrusted:false .value fallback reported per field via `via`/`fallbackReason`, stop-at-first-failure default, exact:false semantics, and the measured iOS change/blur trap where the last field's change has not fired.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and sibling differentiation in the first sentence, and the density is largely justified by the tool's cross-platform complexity. It is very long, and the mention of a non-existent `exact` field plus the Playwright comparison are minor wastes, keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the full burden and does so: it covers ordering, platform divergence, fallback reporting fields, error handling, and the required submit follow-up. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3), but the description adds real meaning: it explains the per-field target shape (selector or ref from webpage_snapshot, plus text, optional per-field clear), the clear default, continueOnError behavior, and the exact:false reinterpretation. One caveat: it references a per-field `exact` property that the schema does not expose (additionalProperties:false), so the added detail slightly exceeds the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (fill several form fields in one call on the device browser) and immediately differentiates itself from siblings: it is the batch form of webpage_type and the counterpart to web_fill_form. Scope (both iOS Safari and Android Chrome, in-order within a single session) is explicit, so an agent can distinguish it from webpage_type without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance: use it instead of calling webpage_type N times for order-dependent forms, and use continueOnError:true specifically when diagnosing which selectors are stale. It also names the required follow-up (this does NOT submit — follow with webpage_press_key("Enter") or webpage_click), leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources