Oswright
Windows desktop automation that re-reads only what changed: 7x fewer tokens per task.
Connector by Ask-812 · GitHub account verified by the MCP Registry
Chalk Labs
Need help deploying Oswright?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/ask-812-oswright
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 26, 2026.
- Tools
- 17 read · 21 write · 1 delete · 4 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 43
Read from the source code; the running server may list different tools.
Read 17 · Look things up without changing anything.
atlas_statsfind_elementfind_image_on_screenfind_text_on_screenget_active_windowget_clipboardget_mouse_positionget_ocr_infoget_screen_infoget_ui_treelist_windowsperception_stats
Show 5 more tools
read_model_textread_screen_textscreenshotscreenshot_windowwait_for_change
Write 21 · Create, change, send or run things.
click_elementclick_textclick_ui_elementclose_windowdouble_click_textfill_fieldfill_formfill_ui_elementhover_textmouse_clickmouse_double_clickmouse_drag
Show 9 more tools
mouse_movemouse_scrollpress_keyright_click_textset_clipboardtype_textwait_for_textwait_for_text_gonewait_for_time
Delete 1 · Delete, drop, revoke or wipe things.
launch_app
Not yet classified 4 · We could not tell from the name and description.
focus_windowminimize_windowobserveremember_screen
Network hosts it talks to 1
github.com· found in code
Files it touches
- Your home directory (~)
C:\\Windows\\notepad.exeC:\\Windows\\System32\\notepad.exe
Tools (43)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
atlas_statsReport what the screen atlas has remembered and how often it helped.
click_elementFind on-screen text via the resolution cascade and click it. The cheaper alternative to click_text: it reuses what is already known about the screen instead of running OCR over the whole display on every call. Args: text: The visible text to find and click. exact: Require the label to equal `text` rather than contain it. button: Mouse button. window_title: Restrict accessibility lookups to one window.
click_textFind text on screen using OCR and click on it. Auto-retries until found or timeout. Returns action result and a screenshot of current screen state. Args: text: The visible text to find and click. exact: Require exact text match (not just substring). button: Mouse button ('left', 'right', 'middle'). timeout: Maximum seconds to wait for the text to appear. Defaults to the server's --timeout setting. poll_interval: Seconds between each retry. monitor: Monitor index.
click_ui_elementClick a UI element using the accessibility tree (Windows only). More reliable than OCR — finds elements deterministically by their role and name. Args: name: Element name/label (substring match). E.g., "Save", "OK", "File". control_type: Element type: Button, Edit, CheckBox, MenuItem, etc. automation_id: Element automation ID (exact match, if known from get_ui_tree). window_title: Target a specific window.
close_windowClose a window by its title (substring match). Sends WM_CLOSE. This may discard unsaved work in the target application. Returns action result and a screenshot. Args: title: Window title substring to find and close.
double_click_textFind text on screen using OCR and double-click on it. Returns action result and a screenshot of current screen state. Args: text: The visible text to find and double-click. exact: Require exact text match. timeout: Maximum seconds to wait for the text to appear. poll_interval: Seconds between each retry. monitor: Monitor index.
fill_fieldFind a text label on screen, click it, clear the field, and type a value. Useful for filling form fields by their label text. Returns action result and a screenshot of current screen state. Args: target_text: The label text to find and click. value: The text to type into the field. exact: Require exact text match for the label. timeout: Maximum seconds to wait for the label. monitor: Monitor index.
fill_formFill multiple form fields in one call. Each field is identified by its label text and filled with the given value. Reduces round-trips for forms. Returns action result and a screenshot of current screen state. Args: fields: List of dicts with 'label' and 'value' keys. Example: [{"label": "Username", "value": "admin"}, {"label": "Password", "value": "secret"}] timeout: Maximum seconds to wait for each label. monitor: Monitor index.
fill_ui_elementSet the value of a UI element (e.g., type text into a text box) using the accessibility tree (Windows only). More reliable than OCR-based fill. Args: value: Text to enter. name: Element name/label to find. automation_id: Automation ID of the element. window_title: Target a specific window.
find_elementFind on-screen text using the cheapest method that can answer. Tries, in order: the existing screen model (free), an incremental rescan of changed regions, the accessibility tree, the application's own text buffer, and finally a full screen read. Returns coordinates ready for mouse_click, plus which rung answered. Args: text: The visible text to find. exact: Require the label to equal `text` rather than contain it. window_title: Restrict accessibility lookups to one window.
find_image_on_screenFind all occurrences of a template image on screen. Coordinates are absolute screen coordinates, ready to pass to mouse_click. Args: template_path: Absolute path to the template image file to find. threshold: Minimum match confidence (0.0-1.0, default 0.8). monitor: Monitor index.
find_text_on_screenFind all occurrences of text on screen using OCR. Returns a list of matches with coordinates and confidence. Coordinates are absolute screen coordinates, ready to pass straight to mouse_click. Args: text: The text to search for on screen. exact: If True, requires exact match. If False, substring match. region_left: Optional left bound to restrict search area. region_top: Optional top bound to restrict search area. region_width: Optional width to restrict search area. region_height: Optional height to restrict search area. monitor: Monitor index.
focus_windowBring a window to the foreground by its title (substring match). Returns the focused window info and a screenshot. Args: title: Window title substring to find and focus.
get_active_windowGet information about the currently active/focused window. Returns the window title, position, size, and process name.
get_clipboardGet the current text content of the system clipboard. Returns the clipboard text or null if empty.
Show 28 more tools
get_mouse_positionGet the current mouse cursor position.
get_ocr_infoGet information about the active OCR backend and available backends. Useful for debugging OCR issues.
get_screen_infoGet screen dimensions and monitor count. Args: monitor: Monitor index (0 = all monitors combined).
get_ui_treeGet the accessibility tree of the focused window (or a specific window). Returns all interactive UI elements with their names, types, and positions. This is deterministic and instant — much more reliable than OCR for apps with proper accessibility support (most modern Windows apps). Windows only. Falls back gracefully on Linux/macOS. Args: window_title: Optional window title to inspect (default: focused window). max_depth: How deep to walk the UI tree (default: 8).
hover_textFind text on screen using OCR and move the mouse over it (hover). Useful for triggering tooltips, hover menus, or inspecting elements. Returns action result and a screenshot of current screen state. Args: text: The visible text to find and hover over. exact: Require exact text match. timeout: Maximum seconds to wait for the text to appear. poll_interval: Seconds between each retry. monitor: Monitor index.
launch_appcan change or delete dataLaunch an application. Optionally wait for specific text to appear on screen (indicating the app has loaded). Returns a screenshot after launch. The command is executed directly, never through a shell, so shell syntax (pipes, redirection, chaining) is not interpreted and not available. Args: command: Application name or full path (e.g. 'notepad', 'calc', r'C:\Windows\System32\notepad.exe'). args: Optional argument list. Prefer this over embedding arguments in `command`, since it needs no quoting at all. wait_text: Optional text to wait for after launch (e.g…
list_windowsList all visible windows on the desktop. Optionally filter by title substring. Returns window titles, positions, sizes, and process names. Args: title_filter: Optional substring to filter window titles (case-insensitive).
minimize_windowMinimize a window by its title (substring match). Returns action result and a screenshot. Args: title: Window title substring to find and minimize.
mouse_clickClick the mouse at coordinates or current position. Returns action result and a screenshot of current screen state. Args: x: X screen coordinate. If not provided, clicks at current position. y: Y screen coordinate. If not provided, clicks at current position. button: Mouse button - 'left', 'right', or 'middle'. clicks: Number of clicks (2 for double-click).
mouse_double_clickDouble-click at coordinates or current position. Returns action result and a screenshot of current screen state. Args: x: X screen coordinate. y: Y screen coordinate.
mouse_dragDrag from one point to another. Returns action result and a screenshot of current screen state. Args: start_x: Starting X coordinate. start_y: Starting Y coordinate. end_x: Ending X coordinate. end_y: Ending Y coordinate. button: Mouse button to hold ('left' or 'right'). duration: Duration of the drag in seconds.
mouse_moveMove the mouse cursor to screen coordinates. Args: x: X screen coordinate. y: Y screen coordinate.
mouse_scrollScroll the mouse wheel. Returns action result and a screenshot of current screen state. Args: amount: Scroll amount. Positive = up, negative = down. x: Optional X coordinate to scroll at. y: Optional Y coordinate to scroll at.
observeReport what changed on screen since the last observation. Prefer this over `screenshot` for tracking state. It maintains a running model of on-screen text and rescans only the regions that actually moved, so it costs a fraction of a full screen read and returns tens of tokens instead of thousands. The first call on an unfamiliar screen reads everything. If the screen has been seen before it is recognised and reused instead, after spot-checking that it really is the same screen. Args: force_full: Rescan the entire screen instead of only what changed. Use if you suspect th…
perception_statsReport how much perception work has been avoided. Covers incremental scanning, remembered screens, and predicted actions.
press_keyPress a key or key combination. Returns action result and a screenshot of current screen state. Supports single keys and combos like 'Enter', 'Ctrl+C', 'Alt+Tab', 'Ctrl+Shift+S'. Args: key: Key name or combo (e.g., 'Enter', 'Ctrl+A', 'Alt+F4').
read_model_textRead on-screen text from the incremental model. Unlike read_screen_text this does not re-OCR the display; it refreshes only the regions that changed and then answers from the model. Args: query: Optional substring filter. limit: Maximum elements to return.
read_screen_textRead ALL visible text on the screen using OCR. Returns every detected text element with its position, in absolute screen coordinates that are ready to click. Args: region_left: Optional left bound to restrict OCR area. region_top: Optional top bound to restrict OCR area. region_width: Optional width to restrict OCR area. region_height: Optional height to restrict OCR area. monitor: Monitor index.
remember_screenRemember the current screen so future visits skip reading it. Useful after arriving at a screen you expect to return to, such as a settings page or a dialog. Remembered screens persist across sessions and are always spot-checked before being reused.
right_click_textFind text on screen using OCR and right-click on it (context menu). Returns action result and a screenshot of current screen state. Args: text: The visible text to find and right-click. exact: Require exact text match. timeout: Maximum seconds to wait for the text to appear. poll_interval: Seconds between each retry. monitor: Monitor index.
screenshotTake a screenshot of the screen or a region. Returns the image as native MCP image content. Optionally saves to a file path. Args: save_path: Optional file path to save the screenshot. region_left: Left coordinate for a sub-region capture. region_top: Top coordinate for a sub-region capture. region_width: Width of the sub-region. region_height: Height of the sub-region. monitor: Monitor index (0 = all monitors, 1 = primary, etc.).
screenshot_windowTake a screenshot of a specific window (by title). Useful for capturing just one application without the rest of the desktop. Returns the image as native MCP image content. Args: title: Window title substring to capture. save_path: Optional file path to save the screenshot.
set_clipboardSet text to the system clipboard. Useful for pasting data into applications. Args: text: The text to copy to the clipboard.
type_textType text using the keyboard (character by character). Returns action result and a screenshot of current screen state. Args: text: The text to type. delay: Delay in seconds between each character.
wait_for_changeread-onlyWait for the screen to visually change. Takes a baseline screenshot, then polls until the screen looks different (or timeout). Useful after triggering an action to wait for the UI to update. Args: timeout: Maximum seconds to wait for a change. poll_interval: Seconds between polls.
wait_for_textWait for specific text to appear on screen. Polls via OCR until found or timeout. Args: text: The text to wait for. exact: Require exact match. timeout: Maximum seconds to wait. Defaults to the server's --timeout. poll_interval: Seconds between polls. monitor: Monitor index.
wait_for_text_goneWait for text to disappear from screen. Polls via OCR until gone or timeout. Useful for waiting for loading spinners, progress dialogs, etc. to finish. Args: text: The text to wait to disappear. exact: Require exact match. timeout: Maximum seconds to wait. Defaults to the server's --timeout. poll_interval: Seconds between polls. monitor: Monitor index.
wait_for_timeWait for a specified amount of time, then take a screenshot. Use sparingly — prefer wait_for_text or wait_for_text_gone instead. Capped at 30 seconds maximum. Args: seconds: Number of seconds to wait (max 30).
Signals
- Stars
- 4
- Forks
- 1
- Open issues
- 0
- Weekly downloads
- 34
- Last commit
- Oct 16, 2026 (18 days ago)
- Last release
- Sep 17, 2026 (1 month ago)
- Last package publish
- Sep 17, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.Ask-812/oswright- Version
- 0.8.2
- Auth
- No auth
- Packages
- pypi oswright
- License
- MIT
- Repository
- github.com/Ask-812/oswright
- First seen
- Oct 24, 2026
- Last checked
- Nov 1, 2026
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get Oswright running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
Oswright MCP server. Agent Mart. https://agentmart.dev/connectors/ask-812-oswright (last updated 2026-11-01)