Skip to content

Automation

Busbar edited this page Nov 2, 2026 · 1 revision

Automation

العربية

Every action the buttons perform is a command with an id, such as capture.fullscreen or doc.export. The window, the command-line tool, the control channel, and the MCP server all call the same list. If you can click it, you can script it. A number of commands have no button yet. Those are listed at the end of this page.

screenit-cli is built beside the application (cargo build --release -p screenit-cli) and is included when you package a release.

One command

screenit-cli commands --ids
screenit-cli exec capture.fullscreen
screenit-cli exec doc.export '{"path":"C:\\Users\\Public\\shot.png"}'

exec prints a JSON result. Unknown fields are rejected and nothing is applied. Bad parameters return an error. They do not crash the process.

Several commands in one session

screenit-cli run '[["capture.fullscreen",{}],["doc.export",{"path":"shot.png"}]]'

The running application

While screenit.exe is open it listens on 127.0.0.1 and an ephemeral port. %LOCALAPPDATA%\screenIt\control.json contains port, token, and pid. Every request must carry that token. Requests run on the UI thread, so the window updates immediately. A reply times out after 60 seconds.

$c = Get-Content "$env:LOCALAPPDATA\screenIt\control.json" | ConvertFrom-Json
$tcp = [System.Net.Sockets.TcpClient]::new("127.0.0.1", $c.port)
$w = [System.IO.StreamWriter]::new($tcp.GetStream()); $w.AutoFlush = $true
$r = [System.IO.StreamReader]::new($tcp.GetStream())
$w.WriteLine((@{ id = 1; token = $c.token; method = "engine.execute";
  params = @{ command = "capture.fullscreen"; params = @{} } } | ConvertTo-Json -Depth 5 -Compress))
$r.ReadLine()

Two methods matter:

Method Purpose
engine.commands Lists every command: id, label, menu path, shortcut, parameter doc, and whether a document must be open.
engine.execute Runs one command. Body: {"command","params"}.

screenit-cli serve speaks the same JSON, one object per line on stdin/stdout, in a fresh headless session with no token. screenit-cli mcp serves the same commands as Model Context Protocol tools on stdio, for an agent that should call screenIt directly.

The protocol is specified in docs/control-protocol.md in the repository.

Commands that have no button in 0.2.2

These work. They are not in the capture bar or the editor.

Command What it does
capture.scroll.begin, .add_frame, .finish, .cancel Stitch a scrolling capture.
capture.freehand, capture.multi_area, capture.fixed, capture.last_region Other selection shapes, and a repeat of the previous rectangle.
capture.preset.save, .list, .delete, .run Named capture setups, including delay and whether to open the editor.
doc.export with a .jpg, .gif, .bmp, .tif, .webp, or .pdf path Flatten the open document to that format. The editor button itself always asks for PNG.
image.border, image.shadow, image.edges, image.reflection, image.spotlight, image.watermark, image.perspective, image.pagecurl, image.fade, image.canvas, image.trim, image.combine Borders, shadows, torn edges, reflection, spotlight, watermark, perspective, page curl, and related effects.
image.grayscale, image.invert, image.sepia, image.blur, image.pixelate, image.sharpen, image.resize, image.rotate, image.flip_horizontal, image.flip_vertical Pixel adjustments.
editor.smart_redact Find emails, phone numbers, card numbers (Luhn), IP addresses, URLs, and your own terms, then pixelate or blur them. Quality follows the OCR.
image.remove_background Colour-based background removal from the corners. It is not a segmentation model.
video.trim, video.cut, video.combine, video.gif, video.from_images Trim, cut, or join recordings, write an animated GIF, or build an MP4 from stills. Trim re-encodes.
record.devices List cameras and related recording devices.
settings.get, settings.set, settings.reset, settings.open Read and write the settings file.
ocr.info Report the active text-recognition engine and installed languages.

Pass parameters as JSON. screenit-cli commands prints the parameter string for each id. A missing required document returns an error from commands marked as needing one, such as doc.export before any capture.

Next

Capturing the screen · Recording · Keyboard shortcuts

Clone this wiki locally