Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
mouse_moveA

Move the mouse cursor. Coordinates are logical points, origin top-left of the main display. Compute them from the screenshot tool's bounds_pt and px_per_pt metadata.

mouse_clickA

Click at (x, y), or at the current cursor if omitted. Coordinates are logical points, origin top-left of the main display. Compute them from the screenshot tool's bounds_pt and px_per_pt metadata. After clicking, take a screenshot to verify the result.

mouse_dragA

Press, drag along path, release. Coordinates are logical points, origin top-left of the main display. Compute them from the screenshot tool's bounds_pt and px_per_pt metadata.

mouse_scrollA

Scroll at (x, y) (moves there first) or at the current cursor. Positive dy scrolls up, negative down, in wheel ticks unless pixels=true.

keyboard_typeA

Type text into the focused element using layout-independent unicode injection. Click the target field first.

key_pressA

Press a key or shortcut chord, e.g. 'Return', 'cmd+s', 'cmd+shift+p', 'F5'. Use keyboard_type for regular text.

screenshotA

Capture the screen (or a region, in points). The response includes bounds_pt and px_per_pt: point = bounds_pt.origin + pixel / px_per_pt. Take a screenshot before any coordinate action.

get_stateB

Re-orientation: cursor position, displays, last screenshot metadata, kill-switch status, and recent action history.

waitA

Wait for a condition: {type: 'duration', ms} | {type: 'text_present', text, region?} | {type: 'screen_stable', quiet_ms}. Timeout returns met=false (an answer, not an error). text_present requires an exact (case-insensitive) substring match, not fuzzy matching.

find_textA

OCR the screen (or a region, in points) and return boxes matching text. Each match has a center you can pass directly to mouse_click. Re-observe rather than act when confidence < 0.5. By default this matches fuzzily (case-insensitive substring either direction, or a similarity ratio >= 0.8); pass fuzzy=false for exact substring matching. This differs from wait's text_present condition and verify's text_present expectation, which always require an exact substring match.

verifyA

Check an expected outcome after acting. expect = {type: 'text_present'|'text_absent'|'region_changed'|'region_unchanged'|'cursor_at'|'window_present'|'window_gone'|'clipboard_contains'|'all_of'|'any_of', ...params, children?}. region_changed/unchanged need baseline_screenshot_id from an earlier screenshot response. text_present/text_absent require an exact (case-insensitive) substring match, not fuzzy. clipboard_contains never returns clipboard content, only matched/clipboard_len.

clipboard_getA

Read the clipboard (sensitive: may require user confirmation). Refused while a password field has focus.

clipboard_setA

Set the clipboard to text or a base64 PNG.

clipboard_pasteA

Paste text into the focused app via clipboard + Cmd+V, then restore the previous clipboard. Preferred over keyboard_type for long text.

window_listA

List windows (optionally filtered by app bundle id or name). Returns window_ref handles for window_focus/window_manage.

window_focusA

Focus (raise) a window by window_ref, or by app and/or title_match. Stale refs are re-resolved by pid + fuzzy title.

window_manageA

move/resize/minimize/unminimize/maximize/close a window. close may trigger 'Don't Save' dialogs and needs confirmation under the default policy.

app_openA

Launch an app by bundle id (preferred) or name; activates it if already running. wait_for_window waits for its first window.

app_closeA

Quit an app gracefully; force=true force-terminates (sensitive, needs confirmation under the default policy).

app_listA

List running apps and the frontmost one.

get_ui_treeA

Accessibility tree for an app (frontmost if omitted): roles, titles, values, clickable regions in points. Ground truth where apps expose it; use find_text where they don't.

execute_sequenceA

Run up to 20 PRE-DECIDED acting steps in one call (click, type, press...), each optionally gated by a guard condition (same schema as wait). A failed guard halts the sequence and returns evidence. Use only when you already know every step; this is a macro, not a planner.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/yuvitbatra/hands-mcp'

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