glass
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| glass_a11y_marks | Screenshot of the active window with a numbered box drawn on each interactable element (Set-of-Mark) — returns the annotated image plus a text legend ( |
| glass_a11y_snapshotA | Capture the active window's accessibility tree (semantic elements: role, name, window-relative bounds) as compact text — deterministic, low-token element addressing alongside screenshots. Each line is |
| glass_baseline_saveC | Save the current frame as a named visual baseline. |
| glass_capabilitiesA | Report which operations (input, multi-touch, clipboard, accessibility, window move/resize) can be performed right now on a backend, and any setup a blocked one needs — so you can check before acting instead of hitting an Unsupported error. Each operation reports a live |
| glass_clickA | Click at window-relative coordinates. button: left|right|middle; count for multi-click. Optional modifiers held during the action, e.g. ["ctrl"] or ["ctrl","shift"] for multi/range-select. |
| glass_click_elementA | Click an element by its #id from glass_a11y_snapshot (clicks the center of its bounds, via the normal click path). If the element actually renders in a popover owned by a different window than the active one (e.g. an open dropdown's option row), the click is automatically routed into that popover window and the previously-active window is restored afterward. Ids are only valid within the latest snapshot — re-run glass_a11y_snapshot if the UI changed. Optional |
| glass_clipboard_get | Read the app's clipboard as text ("" if empty). Also the cheap text-extraction path: glass_do ctrl+a then ctrl+c, then read here (beats OCR for selectable text). Returns Unsupported where the backend can't provide clipboard access. |
| glass_clipboard_setA | Write text to the app's clipboard so it can paste it. Returns Unsupported where the backend can't provide clipboard access. |
| glass_diff | Diff the current frame against a named baseline; returns change stats + bbox. Set |
| glass_do | Run an ordered sequence of input actions in ONE call (collapsing per-action round-trips), then optionally observe. |
| glass_doctorA | Diagnose the glass environment and report per-check status + how to fix anything missing. Use this to self-diagnose a glass_start failure. Optional |
| glass_dragB | Drag with a button held from (x1,y1) to (x2,y2) — window-relative coordinates. Optional modifiers held during the action, e.g. ["ctrl"] or ["ctrl","shift"] for multi/range-select. |
| glass_gestureA | Perform a multi-touch gesture: 2–10 pointers, each a straight from→to segment in window-relative px, all down together at t=0 and up at duration_ms. Pinch = two pointers toward/apart; rotate = two on an arc; two-finger swipe = two parallel segments; a from==to pointer is held. Multi-touch isn't available on every backend — it returns a clear Unsupported error where the active backend can't do it. |
| glass_key | Press a key chord like 'ctrl+s', 'Return', 'alt+F4'. |
| glass_list_windowsA | List the app's top-level windows: id, title, class, geometry, and which is active. Returns a JSON array. Window ids are not stable across calls — re-list after windows open/close instead of caching ids. |
| glass_logsB | Read captured stdout/stderr log lines with a resumable cursor. |
| glass_move | Move the pointer to window-relative coordinates. |
| glass_screenshotA | Capture the app window (or an optional window-relative |
| glass_scrollA | Scroll at window-relative coordinates by (dx,dy) wheel steps. Optional modifiers held during the action, e.g. ["ctrl"] or ["ctrl","shift"] for multi/range-select. |
| glass_scroll_to_element | Scroll a container (any axis) until an accessibility element is on-screen, then return it (text-only, no image). Requires the element to be actually visible — not merely present in the a11y tree — so the returned id is usable with glass_click_element. Select by |
| glass_select_window | Make a window active by id (from glass_list_windows). Subsequent screenshot/click/type/window ops target it; coordinates are relative to it. |
| glass_set_valueA | Set an editable element's value directly via accessibility (instant, no keystrokes) — pick the element's #id from glass_a11y_snapshot. Errors if the element isn't editable, if it changed since the snapshot (re-snapshot), or if the app exposes no accessibility tree. Optional |
| glass_start | Build, launch, and locate a native GUI app; returns its window geometry. Choose a backend with the |
| glass_stopB | Stop the running app and end the session. |
| glass_typeC | Type a string of text into the focused window. |
| glass_wait_for_element | Block until a UI element reaches a precise state, then return it as text (no image). Select by |
| glass_wait_for_logA | Block until a log line containing |
| glass_wait_for_regionA | Block until a visual region changes (diverges from a reference) or matches (converges to a saved baseline), then return text metrics (no image unless |
| glass_wait_stable | Wait until the window stops changing, then return the settled frame. Optional |
| glass_window | Focus/resize/move the window or read its geometry. op: focus|resize|move|geometry. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/fixed-width/glass'
If you have feedback or need assistance with the MCP directory API, please join our Discord server