Press key
browser_press_keyPress a keyboard key in the delegated tab. Supported keys: letters, digits, space, Enter, Tab, Escape, Backspace, Delete, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Home, End, PageUp, PageDown, Insert, F1–F12, and one other character such as ü. Distinct modifiers may prefix one key in any order (Shift+Control+ArrowLeft, Control+Shift+A, Control+Alt+Delete, Meta+c). Control and Ctrl are the same modifier. A repeated modifier is INVALID_ARGUMENT ("Duplicate modifier: Shift", "Duplicate modifier: Control"). An unknown token is INVALID_ARGUMENT ("Unknown key: Nope"). An empty part ("Shift+", "+A") or a modifier with no key (Shift, Shift+Control) is INVALID_ARGUMENT ("Chord is missing a key"). Those checks run before the tab is touched. Modifier chords do not insert text. elementId requires observationId (INVALID_ARGUMENT otherwise). Without elementId, the key goes to the focused element and the result includes target: { tag, id? }. A password, current-password, new-password, one-time-code, or cc-number field returns HUMAN_INPUT_REQUIRED for printable characters, Backspace, Delete, and Insert, and does not change the field. Tab, Enter, and Escape are still sent. ArrowUp and ArrowDown change input[type=number]. Text a number, date, time, or color input cannot hold returns INVALID_INPUT_VALUE and does not set the value. A non-ASCII character is inserted as text only on a field the agent may edit. Events are not isTrusted. Key presses are paced; RATE_LIMITED means wait retryAfterMs.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| elementId | No | ||
| sessionId | Yes | ||
| observationId | No | ||
| idempotencyKey | No | A key replays the original result only within ~60 seconds of the first call, only for the same Mcp-Session-Id, the same credential (API key or OAuth token), the same browser session, and the same tool. After the window, or under a different session/credential/tool, the call executes and bills normally. Reusing a key with different arguments returns IDEMPOTENCY_KEY_REUSED and is not executed or billed. Refusals (e.g. NO_HISTORY_ENTRY) are not cached, so the same key re-executes once state changes. A key passed in _meta is ignored. |