Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LIMONI_AUTOMATION_SOCKETYesPath to the automation socket of the Limoni app to drive (e.g. $XDG_RUNTIME_DIR/limoni-checklist.sock). The socket only exists in apps built with -tags limoni_debug, and only the same user can connect to it.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
statusA

Reports whether the application is reachable, its screen size, the focused widget, and what its automation policy allows: input, screen text, and input values.

treeA

Returns the semantic tree of the current frame: every widget's role, ID, label, value, state and bounds. Start here.

findA

Returns every widget matching a selector, with its subtree. An empty result is not an error.

screenA

Returns the rendered character grid. Prefer tree; use this only for what the tree cannot express, such as chart contents or layout. Disabled unless the application's policy exposes the screen.

clickA

Clicks the centre of the one widget the selector matches, then returns the tree after the application redraws. Refused if the selector matches more than one widget. Clicking toggles a checkbox; to make a step safe to repeat, pass ensure: checked, unchecked or selected, and the widget is clicked only if it is not already in that state.

press_keyA

Sends one key press to the focused widget, then returns the tree after the application redraws. key is a single character or one of: enter, tab, esc, space, backspace, delete, insert, up, down, left, right, home, end, pgup, pgdn, f1–f12.

type_textA

Types text into the focused widget as one key press per character, then returns the tree after the application redraws. Does not press enter.

wait_forA

Waits until a widget matching the selector is on screen, and returns the matches. Use this instead of polling tree when something appears asynchronously.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clearly distinct role: tree/screen/find/status for observation, click/press_key/type_text for input, and wait_for for synchronization. The descriptions explicitly resolve overlap (prefer tree, use screen only as fallback) and state edge cases like click refusing multiple matches. An agent can select the right tool without ambiguity.

Naming Consistency3/5

Names mix three conventions: single nouns (screen, status, tree), bare verbs (find, click), and verb_noun (press_key, type_text, wait_for). The grouping is semantically logical and readable, but there is no single predictable syntactic pattern. This fits 'mixed conventions but still readable' rather than a consistent verb_noun scheme.

Tool Count5/5

Eight tools is well-scoped for a GUI automation server, with each tool earning its place across the observe-act-wait loop. There is no obvious redundancy or padding, and the surface is neither thin nor heavy.

Completeness4/5

The core lifecycle of inspecting the UI, performing input, and waiting for changes is covered. However, common GUI interactions such as scroll, drag, double-click, and right-click are absent; press_key partially compensates for scrolling but not for pointer gestures. These are minor gaps an agent can often work around.

Maintenance

ActivityActive
ResponsivenessSlow