A vision-powered desktop automation library and MCP server. Control any GUI app using natural language via local or remote multimodal LLMs.
20 tools with complete input schemas and descriptions present, but quality is inconsistent. Descriptions are in Korean and vary from 20-80 chars (below the 50-200 char baseline for LLM optimization). All tools have proper JSON Schema with typed parameters. However, parameter descriptions are minimal (often just restating the parameter name in Korean), and output schemas are entirely undocumented. No error handling guidance, no recovery hints, and no indication of which tools are idempotent or have side effects. Tool naming follows verb_noun pattern well (capture_screenshot, get_coordinates, click_on), but composition issues exist: wait_and_click combines two concerns; mark_region is a utility rather than a primary action. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications in the metadata. Vision-based tools (get_coordinates, check_condition, read_text) depend on external LLM calls but lack documentation of failure modes or fallback behavior.
현재 화면을 캡처하고 이미지를 반환합니다. 모든 비전 분석의 첫 단계입니다.
스크린샷에서 자연어로 설명된 조건이 충족됐는지 확인합니다.
화면에서 자연어로 설명된 UI 요소를 찾아 클릭합니다.
화면에서 두 요소를 자연어로 설명해 드래그합니다.
스크린샷에서 JSON 스키마에 맞는 구조화된 데이터를 추출합니다.
스크린샷에서 조건에 맞는 UI 요소를 모두 찾아 좌표 리스트를 반환합니다.
스크린샷에서 자연어로 설명된 영역의 바운딩 박스를 반환합니다 (0~1000 정규화).
Output schemas completely undocumented. No tool documents what fields it returns, data types, or structure. LLMs cannot plan downstream tool calls or extract required data without guessing.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications in metadata. Tools marked WRITE (click_on, type_text, open_app) should declare destructiveHint=true; READ_ONLY tools should declare readOnlyHint=true. This prevents agents from accidentally triggering side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
클립보드의 현재 텍스트를 반환합니다.
스크린샷에서 자연어로 설명된 UI 요소의 중심 좌표를 반환합니다 (0~1000 정규화).
키 조합을 누릅니다. 예: ["command", "a"], ["ctrl", "c"].
화면에서 자연어로 설명된 UI 요소 위로 커서를 이동합니다 (클릭 없음).
스크린샷 위에 바운딩 박스를 그려 저장합니다. 디버깅·시각화용.
응용프로그램을 실행합니다.
URI 스킴을 가진 앱을 실행합니다.
키를 누릅니다. 예: "enter", "escape", "tab", "down".
스크린샷의 특정 영역에서 텍스트를 읽어 반환합니다.
화면을 스크롤합니다.
텍스트를 클립보드를 통해 입력합니다. 한글/영어/특수문자 모두 지원.
조건이 충족될 때까지 대기한 뒤 요소를 클릭합니다.
조건이 충족될 때까지 반복적으로 화면을 캡처해 확인합니다.
Parameter descriptions are minimal and often just restate the parameter name in Korean. E.g., 'image_path' has description '스크린샷 파일 경로' (screenshot file path), no guidance on format, expected directory, or error handling if file missing. Descriptions should be 50-200 chars and include constraints, format, and failure modes.
Vision-based tools (get_coordinates, check_condition, read_text, find_all_elements, extract_structured_data) depend on external LLM calls but lack documentation of failure modes, timeout behavior, or fallback strategies. No error guidance for when the LLM cannot locate an element or parse text.
Composition issue: wait_and_click combines two concerns (wait + click). Should be split into separate tools so agents can compose them independently. Similarly, mark_region is a debugging utility, not a primary action, consider moving to a separate debug namespace or optional feature.