Skip to main content
Glama

list_windows

Read-only

List all open windows with their ids, classes, titles, geometry, and focus state to locate targets for keyboard input. Use the provided window ids to direct type_text and press_keys actions.

Instructions

Every open window with id, wm_class, title, geometry, pid and which one has focus. Start here: ids from this list are what type_text and press_keys target (ids change when a dialog is recreated -- a wm_class or title fragment does not). HOW TO DRIVE THIS DESKTOP, because the round trip is the expensive part and the actions are milliseconds: (1) ui_find then ui_press where the app has an accessibility tree -- it cannot miss; (2) find_text for Chrome, Electron and Qt, which expose almost nothing; (3) do_steps when you already know the next few actions, instead of one call each; (4) let the acting tool show you the result rather than following it with a screenshot -- they all do now. A screenshot of the whole screen is the last resort, not the first move.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Install Server

TDQS

A4.1/5.0
Behavior4/5

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

readOnlyHint is true, and the description adds behavioral context beyond it: it returns the focused window, ids are consumed by type_text and press_keys, and ids change when a dialog is recreated while a wm_class/title fragment does not. The HOW TO DRIVE section also frames cost expectations by noting the round trip is expensive while actions take milliseconds. There is no contradiction with the read-only annotation.

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

Conciseness2/5

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

The first two sentences are front-loaded and high-value, but a long general desktop-driving primer follows, covering ui_find, find_text, do_steps, and screenshot policy. This material is only loosely about list_windows and would be better placed in a shared system prompt. The description is overlong for a zero-parameter, read-only tool, even though it is structured as a numbered list.

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?

With no output schema, the description explains the return content ('id, wm_class, title, geometry, pid and which one has focus') and how the ids should be used, which is enough to call the tool correctly. It also covers the dynamic nature of ids and the recommended order of operations. It is functionally complete despite the extraneous driving advice.

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

Parameters4/5

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

The input schema is empty and schema description coverage is 100%, so there are no parameter semantics for the description to clarify. Baseline 4 applies because zero parameters mean the description has no burden to explain parameter meaning. The description appropriately focuses on outputs and usage instead.

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 names a concrete resource ('every open window') with an explicit verb ('list') and enumerates the returned fields: id, wm_class, title, geometry, pid, and focus. It positions the tool as the entry point for obtaining window ids, which clearly separates its role from action tools like type_text and press_keys. An agent can tell exactly what this tool does without inspecting the schema.

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

Usage Guidelines4/5

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

The description explicitly says 'Start here' for targeting type_text and press_keys and explains that ids from this list are what those tools consume. It also gives broader routing guidance for driving the desktop and says a full screenshot is the last resort. It does not explicitly contrast list_windows with sibling window-related tools such as window_at or ui_apps, so the when-not guidance is incomplete.

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