Skip to main content
Glama

ui_set_text

Enter text into editable fields via AT-SPI even when unfocused or screen-locked, then verify the text landed.

Instructions

PREFERRED way to enter text. Writes through AT-SPI EditableText, which needs no focus and no ydotool: it works on an unfocused window and even while the screen is locked, and it reads the widget back to prove the text landed. Use type_text only when a widget is not AT-SPI-editable.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
appNoApplication name; its editable text widget is located automatically
lookNoWhat to show you afterwards. Default "auto": wait for the screen to stop changing, measure how much this action changed, and attach a picture of the affected window only if something did change -- so a click that hit nothing costs no tokens and says so. "window" always attaches it, "screen" uses the whole desktop (slower, 6x the tokens), "region" uses look_at, false skips all of it. Use false for the middle of a sequence you are going to check at the end anyway.auto
pathNoOr an exact index path. Both tools return the resolved path -- pass it back to address the SAME document across write and read; without it, both prefer the focused text widget.
textYesText to write
look_atNoRectangle for look:"region", in screen pixels. Object form {x, y, width, height} or array form [x, y, width, height].
replaceNoClear existing content first
settle_max_sNoHow long to wait for the screen to stop changing before looking. Raise it for an app that animates slowly; set it to 0 to capture immediately.
Install Server

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden and does it well: it reveals that no focus is needed, that it works on a locked screen, that it does not rely on ydotool, and that it verifies the text landed by reading the widget back. It does not mention what happens with existing text when replace is false, but the schema covers the replace parameter.

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?

The description is concise, front-loaded, and every sentence earns its place. It states the core purpose, the key behavioral advantages, and the sibling fallback condition without adding redundant details.

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 7-parameter tool with no output schema, the description gives enough decision-relevant context: what the tool does, how it works, and when not to use it. It does not fully spell out able default insertion behavior or return-value shape, but the schema's rich parameter descriptions compensate for those gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents all seven parameters. The description adds useful context about the overall mechanism and verification behavior, but does not add much per-parameter meaning beyond what the schema provides. This matches the baseline for full schema coverage.

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?

The description opens with 'PREFERRED way to enter text' and states it writes through AT-SPI EditableText, giving a specific verb, resource, and mechanism. It also explicitly distinguishes itself from the sibling type_text by naming it and explaining the boundary.

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?

It clearly states when to use this tool: for entering text into AT-SPI-editable widgets, including when focus is unavailable or the screen is locked. It also gives an explicit exclusion: 'Use type_text only when a widget is not AT-SPI-editable,' which tells the agent when to choose the alternative.

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

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tristanmuzzu/deskwright'

If you have feedback or need assistance with the MCP directory API, please join our Discord server