{"name":"io.github.Ask-812/oswright","slug":"ask-812-oswright","title":null,"description":"Windows desktop automation that re-reads only what changed: 7x fewer tokens per task.","url":"https://mcp.market/server/ask-812-oswright","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":32,"stars":3,"forks":1,"downloads_week":155,"last_push_at":"2026-09-17T07:26:00.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Ask-812/oswright","website":null,"version":"0.8.2","remotes":[],"packages":[{"registryType":"pypi","identifier":"oswright","version":"0.8.2","runtimeHint":"uvx","transport":{"type":"stdio"}}],"tools":[{"name":"atlas_stats","description":"Report what the screen atlas has remembered and how often it helped.","write_action":false,"price_micros":0,"input_schema":null},{"name":"click_element","description":"Find on-screen text via the resolution cascade and click it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"click_text","description":"Find 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"click_ui_element","description":"Click a UI element using the accessibility tree (Windows only). More reliable than OCR — finds elements deterministically by their role and name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"close_window","description":"Close 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"double_click_text","description":"Find text on screen using OCR and double-click on it. Returns action result and a screenshot of current screen state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fill_field","description":"Find 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fill_form","description":"Fill 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fill_ui_element","description":"Set 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_element","description":"Find on-screen text using the cheapest method that can answer.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_image_on_screen","description":"Find all occurrences of a template image on screen. Coordinates are absolute screen coordinates, ready to pass to mouse_click.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_text_on_screen","description":"Find 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"focus_window","description":"Bring a window to the foreground by its title (substring match). Returns the focused window info and a screenshot.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_active_window","description":"Get information about the currently active/focused window. Returns the window title, position, size, and process name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_clipboard","description":"Get the current text content of the system clipboard. Returns the clipboard text or null if empty.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_mouse_position","description":"Get the current mouse cursor position.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_ocr_info","description":"Get information about the active OCR backend and available backends. Useful for debugging OCR issues.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_screen_info","description":"Get screen dimensions and monitor count.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_ui_tree","description":"Get 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).","write_action":false,"price_micros":0,"input_schema":null},{"name":"hover_text","description":"Find 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"launch_app","description":"Launch an application. Optionally wait for specific text to appear on screen (indicating the app has loaded). Returns a screenshot after launch.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_windows","description":"List all visible windows on the desktop. Optionally filter by title substring. Returns window titles, positions, sizes, and process names.","write_action":false,"price_micros":0,"input_schema":null},{"name":"minimize_window","description":"Minimize a window by its title (substring match). Returns action result and a screenshot.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mouse_click","description":"Click the mouse at coordinates or current position. Returns action result and a screenshot of current screen state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mouse_double_click","description":"Double-click at coordinates or current position. Returns action result and a screenshot of current screen state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mouse_drag","description":"Drag from one point to another. Returns action result and a screenshot of current screen state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mouse_move","description":"Move the mouse cursor to screen coordinates.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mouse_scroll","description":"Scroll the mouse wheel. Returns action result and a screenshot of current screen state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"observe","description":"Report what changed on screen since the last observation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"perception_stats","description":"Report how much perception work has been avoided. Covers incremental scanning, remembered screens, and predicted actions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"press_key","description":"Press a key or key combination. Returns action result and a screenshot of current screen state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_model_text","description":"Read on-screen text from the incremental model.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_screen_text","description":"Read 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"remember_screen","description":"Remember the current screen so future visits skip reading it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"right_click_text","description":"Find text on screen using OCR and right-click on it (context menu). Returns action result and a screenshot of current screen state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"screenshot","description":"Take a screenshot of the screen or a region. Returns the image as native MCP image content. Optionally saves to a file path.","write_action":false,"price_micros":0,"input_schema":null},{"name":"screenshot_window","description":"Take 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_clipboard","description":"Set text to the system clipboard. Useful for pasting data into applications.","write_action":false,"price_micros":0,"input_schema":null},{"name":"type_text","description":"Type text using the keyboard (character by character). Returns action result and a screenshot of current screen state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wait_for_change","description":"Wait 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wait_for_text","description":"Wait for specific text to appear on screen. Polls via OCR until found or timeout.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wait_for_text_gone","description":"Wait for text to disappear from screen. Polls via OCR until gone or timeout. Useful for waiting for loading spinners, progress dialogs, etc. to finish.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wait_for_time","description":"Wait 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.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-19T19:42:06.687Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T19:42:06.632Z","components":{"code":{"score":25,"max":25,"notes":["27 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"oswright","version":"0.8.2","found":true,"weeklyDownloads":155,"license":"MIT","dependencyCount":18,"publishedAt":"2026-09-17T06:45:59.746442Z","repositoryUrl":"https://github.com/Ask-812/oswright"}],"repo":{"found":true,"owner":"Ask-812","repo":"oswright","archived":false,"pushedAt":"2026-09-17T07:26:00Z","stars":3,"forks":1,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/140433428?v=4","ownerCreatedAt":"2023-07-24T16:48:23Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":3,"forks":1,"downloadsWeek":155,"license":"MIT","lastPushAt":"2026-09-17T07:26:00.000Z","score":32}}}},"grade_history":[],"reviews":[]}