Computer Use
Search the AT-SPI tree for nodes matching a role/name/state filter and return a flat list.
Find request
application/json- body
limit?integername?stringnameMatch?string"exact" | "substring" | "regex"
pid?integerrole?stringscope?stringstates?array<string>OK
application/json- response
matches?array<>truncated?booleancurl -X POST 'https://example.com/computeruse/a11y/find' \ -H 'Content-Type: application/json' \ -d '{}'{ "matches": [ { "actions": [ "string" ], "bounds": { "height": 0, "width": 0, "x": 0, "y": 0 }, "children": [ {} ], "description": "string", "id": "string", "name": "string", "role": "string", "states": [ "string" ] } ], "truncated": true}Move keyboard focus to the AT-SPI node identified by id (bus-name:object-path).
Node focus request
application/json- body
id*stringOK
application/json- response
curl -X POST 'https://example.com/computeruse/a11y/node/focus' \ -H 'Content-Type: application/json' \ -d '{ "id": "string"}'{}Call an AT-SPI Action on the node. Leave action empty to invoke the node's primary (first) action.
Invoke request
application/json- body
action?stringid*stringOK
application/json- response
curl -X POST 'https://example.com/computeruse/a11y/node/invoke' \ -H 'Content-Type: application/json' \ -d '{ "id": "string"}'{}Write the given value to the node via EditableText.SetTextContents or, for numeric controls, Value.CurrentValue.
Set value request
application/json- body
id*stringvalue?stringOK
application/json- response
curl -X POST 'https://example.com/computeruse/a11y/node/value' \ -H 'Content-Type: application/json' \ -d '{ "id": "string"}'{}Fetch the AT-SPI accessibility tree for the focused application, a specific PID, or all registered applications.
scope?stringScope: focused | pid | all (default: focused)
pid?integerProcess ID when scope=pid
maxDepth?integerMax tree depth (-1 unbounded, 0 root only; default -1)
OK
application/json- response
root?truncated?booleancurl -X GET 'https://example.com/computeruse/a11y/tree'{ "root": { "actions": [ "string" ], "bounds": { "height": 0, "width": 0, "x": 0, "y": 0 }, "children": [ {} ], "description": "string", "id": "string", "name": "string", "role": "string", "states": [ "string" ] }, "truncated": true}Get information about all available displays
OK
application/json- response
displays?array<>curl -X GET 'https://example.com/computeruse/display/info'{ "displays": [ { "height": 0, "id": 0, "isActive": true, "width": 0, "x": 0, "y": 0 } ]}Get information about all open windows
OK
application/json- response
windows?array<>curl -X GET 'https://example.com/computeruse/display/windows'{ "windows": [ { "height": 0, "id": 0, "isActive": true, "title": "string", "width": 0, "x": 0, "y": 0 } ]}Press a key or modifier and hold it down until a matching key up call
Key down request
application/json- body
key*stringe.g., "ctrl", "shift", "a"
OK
application/json- response
curl -X POST 'https://example.com/computeruse/keyboard/down' \ -H 'Content-Type: application/json' \ -d '{ "key": "string"}'{}Press a hotkey combination (e.g., ctrl+c, cmd+v)
Hotkey press request
application/json- body
keys?stringe.g., "ctrl+c", "cmd+v"
OK
application/json- response
curl -X POST 'https://example.com/computeruse/keyboard/hotkey' \ -H 'Content-Type: application/json' \ -d '{}'{}Press a key with optional modifiers
Key press request
application/json- body
key?stringmodifiers?array<string>ctrl, alt, shift, cmd
OK
application/json- response
curl -X POST 'https://example.com/computeruse/keyboard/key' \ -H 'Content-Type: application/json' \ -d '{}'{}Type text with optional delay between keystrokes
Text typing request
application/json- body
delay?integermilliseconds between keystrokes
text?stringOK
application/json- response
curl -X POST 'https://example.com/computeruse/keyboard/type' \ -H 'Content-Type: application/json' \ -d '{}'{}Release a key or modifier that is currently held down
Key up request
application/json- body
key*stringe.g., "ctrl", "shift", "a"
OK
application/json- response
curl -X POST 'https://example.com/computeruse/keyboard/up' \ -H 'Content-Type: application/json' \ -d '{ "key": "string"}'{}Click the mouse button at the specified coordinates
Mouse click request
application/json- body
button?stringleft, right, middle
clicks?integerClicks is a pointer so an omitted value is distinguishable from an explicit 0, which must be rejected rather than silently defaulted.
double?booleanmodifiers?array<string>x?integery?integerOK
application/json- response
x?integery?integercurl -X POST 'https://example.com/computeruse/mouse/click' \ -H 'Content-Type: application/json' \ -d '{}'{ "x": 0, "y": 0}Press and hold a mouse button, optionally moving to the specified coordinates first
Mouse button press request
application/json- body
button?stringleft, right, middle
x?integery?integerOK
application/json- response
x?integery?integercurl -X POST 'https://example.com/computeruse/mouse/down' \ -H 'Content-Type: application/json' \ -d '{}'{ "x": 0, "y": 0}Drag the mouse from start to end coordinates
Mouse drag request
application/json- body
button?stringendX?integerendY?integermodifiers?array<string>startX?integerstartY?integerOK
application/json- response
x?integery?integercurl -X POST 'https://example.com/computeruse/mouse/drag' \ -H 'Content-Type: application/json' \ -d '{}'{ "x": 0, "y": 0}Move the mouse cursor to the specified coordinates
Mouse move request
application/json- body
x?integery?integerOK
application/json- response
x?integery?integercurl -X POST 'https://example.com/computeruse/mouse/move' \ -H 'Content-Type: application/json' \ -d '{}'{ "x": 0, "y": 0}Get the current mouse cursor position
OK
application/json- response
x?integery?integercurl -X GET 'https://example.com/computeruse/mouse/position'{ "x": 0, "y": 0}Scroll the mouse wheel at the specified coordinates
Mouse scroll request
application/json- body
amount?integer0 <= value1direction?stringup, down, left, right
modifiers?array<string>x?integery?integerOK
application/json- response
success?booleancurl -X POST 'https://example.com/computeruse/mouse/scroll' \ -H 'Content-Type: application/json' \ -d '{}'{ "success": true}Release a held mouse button, optionally moving to the specified coordinates first
Mouse button release request
application/json- body
button?stringleft, right, middle
x?integery?integerOK
application/json- response
x?integery?integercurl -X POST 'https://example.com/computeruse/mouse/up' \ -H 'Content-Type: application/json' \ -d '{}'{ "x": 0, "y": 0}Get the status of all computer use processes
OK
application/json- response
status?stringcurl -X GET 'https://example.com/computeruse/process-status'{ "status": "string"}Get errors for a specific computer use process
processName*stringProcess name to get errors for
OK
application/json- response
errors?stringprocessName?stringcurl -X GET 'https://example.com/computeruse/process/string/errors'{ "errors": "string", "processName": "string"}Get logs for a specific computer use process
processName*stringProcess name to get logs for
OK
application/json- response
logs?stringprocessName?stringcurl -X GET 'https://example.com/computeruse/process/string/logs'{ "logs": "string", "processName": "string"}Restart a specific computer use process
processName*stringProcess name to restart
OK
application/json- response
message?stringprocessName?stringcurl -X POST 'https://example.com/computeruse/process/string/restart'{ "message": "string", "processName": "string"}Check if a specific computer use process is running
processName*stringProcess name to check
OK
application/json- response
processName?stringrunning?booleancurl -X GET 'https://example.com/computeruse/process/string/status'{ "processName": "string", "running": true}Get a list of all recordings (active and completed)
OK
application/json- response
recordings*array<>curl -X GET 'https://example.com/computeruse/recordings'{ "recordings": [ { "durationSeconds": 0, "endTime": "string", "fileName": "string", "filePath": "string", "id": "string", "sizeBytes": 0, "startTime": "string", "status": "string" } ]}Start a new screen recording session
Recording options
application/json- body
label?stringCreated
application/json- response
durationSeconds?numberendTime?stringfileName*stringfilePath*stringid*stringsizeBytes?integerstartTime*stringstatus*stringcurl -X POST 'https://example.com/computeruse/recordings/start' \ -H 'Content-Type: application/json' \ -d '{}'{ "durationSeconds": 0, "endTime": "string", "fileName": "string", "filePath": "string", "id": "string", "sizeBytes": 0, "startTime": "string", "status": "string"}Stop an active screen recording session
Recording ID to stop
application/json- body
id*stringOK
application/json- response
durationSeconds?numberendTime?stringfileName*stringfilePath*stringid*stringsizeBytes?integerstartTime*stringstatus*stringcurl -X POST 'https://example.com/computeruse/recordings/stop' \ -H 'Content-Type: application/json' \ -d '{ "id": "string"}'{ "durationSeconds": 0, "endTime": "string", "fileName": "string", "filePath": "string", "id": "string", "sizeBytes": 0, "startTime": "string", "status": "string"}Get details of a specific recording by ID
id*stringRecording ID
OK
application/json- response
durationSeconds?numberendTime?stringfileName*stringfilePath*stringid*stringsizeBytes?integerstartTime*stringstatus*stringcurl -X GET 'https://example.com/computeruse/recordings/string'{ "durationSeconds": 0, "endTime": "string", "fileName": "string", "filePath": "string", "id": "string", "sizeBytes": 0, "startTime": "string", "status": "string"}Delete a recording file by ID
id*stringRecording ID
No Content
curl -X DELETE 'https://example.com/computeruse/recordings/string'Download a recording by providing its ID
id*stringRecording ID
OK
response?unknownapplication/octet-streamcurl -X GET 'https://example.com/computeruse/recordings/string/download'nullTake a screenshot of the entire screen
showCursor?booleanWhether to show cursor in screenshot
OK
application/json- response
cursorPosition?screenshot?stringsizeBytes?integercurl -X GET 'https://example.com/computeruse/screenshot'{ "cursorPosition": { "x": 0, "y": 0 }, "screenshot": "string", "sizeBytes": 0}Take a compressed screenshot of the entire screen
showCursor?booleanWhether to show cursor in screenshot
format?stringImage format (png or jpeg)
quality?integerJPEG quality (1-100)
scale?numberScale factor (0.1-1.0)
OK
application/json- response
cursorPosition?screenshot?stringsizeBytes?integercurl -X GET 'https://example.com/computeruse/screenshot/compressed'{ "cursorPosition": { "x": 0, "y": 0 }, "screenshot": "string", "sizeBytes": 0}Take a screenshot of a specific region of the screen
x*integerX coordinate of the region
y*integerY coordinate of the region
width*integerWidth of the region
height*integerHeight of the region
showCursor?booleanWhether to show cursor in screenshot
OK
application/json- response
cursorPosition?screenshot?stringsizeBytes?integercurl -X GET 'https://example.com/computeruse/screenshot/region?x=0&y=0&width=0&height=0'{ "cursorPosition": { "x": 0, "y": 0 }, "screenshot": "string", "sizeBytes": 0}Take a compressed screenshot of a specific region of the screen
x*integerX coordinate of the region
y*integerY coordinate of the region
width*integerWidth of the region
height*integerHeight of the region
showCursor?booleanWhether to show cursor in screenshot
format?stringImage format (png or jpeg)
quality?integerJPEG quality (1-100)
scale?numberScale factor (0.1-1.0)
OK
application/json- response
cursorPosition?screenshot?stringsizeBytes?integercurl -X GET 'https://example.com/computeruse/screenshot/region/compressed?x=0&y=0&width=0&height=0'{ "cursorPosition": { "x": 0, "y": 0 }, "screenshot": "string", "sizeBytes": 0}Start all computer use processes and return their status
OK
application/json- response
message?stringstatus?curl -X POST 'https://example.com/computeruse/start'{ "message": "string", "status": { "property1": { "autoRestart": true, "pid": 0, "priority": 0, "running": true }, "property2": { "autoRestart": true, "pid": 0, "priority": 0, "running": true } }}Get the current status of the computer use system
OK
application/json- response
status?stringcurl -X GET 'https://example.com/computeruse/status'{ "status": "string"}Stop all computer use processes and return their status
OK
application/json- response
message?stringstatus?curl -X POST 'https://example.com/computeruse/stop'{ "message": "string", "status": { "property1": { "autoRestart": true, "pid": 0, "priority": 0, "running": true }, "property2": { "autoRestart": true, "pid": 0, "priority": 0, "running": true } }}