limoni-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LIMONI_AUTOMATION_SOCKET | Yes | Path 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
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.
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.
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.
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.