Skip to main content
Glama

browser_type

Read-onlyIdempotent

Type text into an element with per-keystroke delay (organic). Each character dispatches keydown/keypress/keyup, unlike browser.fill which replaces .value instantly. Use when the page listens to keystroke events or for typing-speed fingerprint checks. ref is an aria-ref token from browser.snapshot ('e7') or a CSS selector. delay_ms defaults to 50. The element is emptied first unless clear is false, which appends at its end.

Input Schema

NameRequiredDescriptionDefault
refYes
textYes
clearNo
page_idYes
delay_msNo
in_workspaceNoRun this one call in this workspace id instead of the session's. Nothing is stored; other sessions are not affected.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / clear
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": true,
      +  "title": "Clear"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / in_workspace
      Added value: +{
      +  "description": "Run this one call in this workspace id instead of the session's. Nothing is stored; other sessions are not affected.",
      +  "type": "integer"
      +}
  3. Added
  4. Removed
  5. Added
  6. Removed
  7. Added
  8. Removed
  9. Added
  10. Removed
  11. First observed

TDQS

A4.3/5.0
Behavior2/5

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

The description discloses genuinely useful behavior — per-character event dispatch, the default 50ms delay, and that the field is cleared first unless clear=false (which appends). However, this conflicts with the annotations: readOnlyHint=true and destructiveHint=false are asserted for a tool that mutates an element's value and empties existing content, and idempotentHint=true does not hold for the clear=false append path. The disclosure is strong but the behavior it describes contradicts the safety profile.

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

Conciseness5/5

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

Four sentences, each carrying distinct payload — mechanism, selection rule, ref syntax, and the clear/delay defaults — with the differentiator front-loaded right after the purpose. No filler or restatement of the tool name.

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

Completeness4/5

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

For a 6-parameter, no-output-schema interaction tool, the description covers mechanism, alternatives, and the non-obvious parameters well. Minor gaps remain: it doesn't say whether a snapshot must precede it (implied by the ref token), how failures like a missing/disabled element surface, or that the session's page_id identifies the target tab.

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 only 17%, so the description must compensate, and it does: `ref` is defined as an aria-ref token from browser.snapshot ('e7') or a CSS selector (including the sibling to obtain it), `delay_ms` is characterized as per-keystroke delay defaulting to 50, and `clear` is explained as empty-first vs append-at-end. Only the self-evident page_id/text are left implicit.

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 ('Type text into an element') and immediately distinguishes itself from the nearest sibling by mechanism: per-keystroke keydown/keypress/keyup events versus browser.fill's instant .value replacement. An agent can pick between browser_type and browser_fill 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 an explicit when-to-use rule ('when the page listens to keystroke events or for typing-speed fingerprint checks') and names the alternative (browser.fill) with the condition that selects it. The choice between the two tools is fully determined by the text.

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.