Skip to main content
Glama

press_keys

Send a keyboard shortcut to a specific window after confirming it has focus, so the key combination lands where you intend. If focus cannot be confirmed, no keys are sent.

Instructions

Send a key combination to a named window, e.g. ctrl+s. Chain several with do_steps rather than one call each. Focus is confirmed first. Ctrl+Alt+F1-F12 is refused: it switches virtual terminal and looks exactly like a frozen machine.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
viaNoauto
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
comboYese.g. 'ctrl+shift+t'
targetYesWindow id from list_windows, or a wm_class / title fragment. The window is activated and focus is CONFIRMED before any key is sent; if focus does not land, nothing is typed.
look_atNoRectangle for look:"region", in screen pixels. Object form {x, y, width, height} or array form [x, y, width, height].
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.2/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden and does meaningful work: it discloses that focus is confirmed before any key is sent, that nothing is typed if focus fails, and that Ctrl+Alt+F1-F12 is deliberately refused because it can look like a frozen machine. It falls short of full transparency because it says nothing about return behavior or other side effects.

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?

Three short sentences, each earning its place: the core action with an example, the batching guidance, and a critical safety warning. There is no filler or redundant restatement of the schema.

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?

Given no output schema and no annotations, the description covers the essential selection and safety context: focus confirmation, fail-safe behavior, the do_steps alternative, and the dangerous combo. The schema covers the look and settle parameters, making this complete enough to invoke correctly, though a one-line statement of what the tool returns would make it fully self-sufficient.

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 83%, so the schema already documents most parameters. The description adds an extra combo example and reinforces the focus-confirmation behavior for target, but the optional 'via' parameter remains undocumented and the description does not compensate for that gap.

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 states a specific verb ('Send') and a well-defined resource ('a key combination to a named window'), with a concrete example ('ctrl+s'). It also distinguishes itself from do_steps by advising chaining, so an agent can tell when this tool is the right one.

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?

It gives an explicit routing rule: chain several key combinations with do_steps instead of calling this tool once per combo, which is actionable guidance. It also warns against the dangerous Ctrl+Alt+F1-F12 combination, but it does not compare press_keys with closely related keyboard siblings like ui_press, hold_key, or type_text.

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