Inhalt

Tools

Alle Tools des MCP-Servers von LetKite: was sie tun, ob sie nur lesen oder etwas ändern können, und ihre Parameter. Diese Seite wird aus dem Code des Gateways generiert und führt daher genau das auf, was ein KI-Client sieht.

Jedes Tool trägt die standardmäßigen MCP-Annotationen:

  • Nur lesend readOnlyHint: true: ändert nichts auf einer Maschine oder in LetKite.
  • Destruktiv destructiveHint: true: kann Vorhandenes ändern oder entfernen, zum Beispiel durch Ausführen eines Befehls, Schreiben oder Löschen einer Datei, Stoppen eines Auftrags oder Tippen auf einem Bildschirm.
  • Öffnet oder schließt eine Sitzung keines von beiden: fügt etwas Umkehrbares hinzu oder entfernt es, etwa eine Shell-Sitzung, ein Log-Abonnement, einen Tunnel oder einen geteilten Webdienst.

Jedes Tool hat openWorldHint: false: Tools wirken nur auf die Maschinen in Ihrem eigenen LetKite-Konto. Unabhängig von den Annotationen eines Tools gelten die Berechtigungen und Freigaben der Verbindung für jeden Aufruf, und jeder Aufruf wird im Aktivitätsprotokoll festgehalten.

Die meisten Tools erwarten einen host: den Alias oder die Knoten-ID einer Maschine aus list_hosts, nie eine IP-Adresse.

Generiert aus dem Code des Gateways (letkite/letkite@78168ef, 2026-10-19). 47 Tools: 17 nur lesend, 22 destruktiv, 8, die eine Sitzung öffnen oder schließen. Toolbeschreibungen werden auf Englisch angezeigt, so wie KI-Clients sie erhalten.

Hosts und Befehle
list_hostsList hostsNur lesend
host_factsHost factsNur lesend
fleet_statusGateway statusNur lesend
execRun commandDestruktiv
exec_manyRun command on many hostsDestruktiv
shell_openOpen shell sessionÖffnet oder schließt eine Sitzung
shell_runRun in shell sessionDestruktiv
shell_closeClose shell sessionÖffnet oder schließt eine Sitzung
Dateien und Übertragungen
list_dirList directoryNur lesend
read_fileRead fileNur lesend
write_fileWrite fileDestruktiv
delete_pathDelete pathDestruktiv
copy_between_hostsCopy file between hostsDestruktiv
transfer_startStart file transferDestruktiv
transfer_statusTransfer statusNur lesend
transfer_cancelCancel transferDestruktiv
Aufträge, Logs, Tunnel und Knoten
job_startStart background jobDestruktiv
job_statusJob statusNur lesend
job_outputRead job outputNur lesend
job_killKill jobDestruktiv
job_purgePurge jobDestruktiv
log_openOpen log subscriptionÖffnet oder schließt eine Sitzung
log_readRead log linesNur lesend
log_closeClose log subscriptionÖffnet oder schließt eine Sitzung
tunnel_openOpen tunnelÖffnet oder schließt eine Sitzung
tunnel_httpHTTP through tunnelDestruktiv
tunnel_closeClose tunnelÖffnet oder schließt eine Sitzung
wake_nodeWake nodeDestruktiv
wake_deviceWake LAN deviceDestruktiv
approval_waitWait for approvalNur lesend
audit_tailAudit log tailNur lesend
Zeitpläne
schedule_createCreate scheduleDestruktiv
schedule_listList schedulesNur lesend
schedule_deleteDelete scheduleDestruktiv
schedule_runsSchedule run historyNur lesend
Geteilte Webdienste
share_createCreate web shareÖffnet oder schließt eine Sitzung
share_listList web sharesNur lesend
share_deleteDelete web shareDestruktiv
Terminals
terminal_openOpen terminalDestruktiv
terminal_sendType into terminalDestruktiv
terminal_readRead terminal outputNur lesend
terminal_askAsk person to typeDestruktiv
terminal_resizeResize terminalÖffnet oder schließt eine Sitzung
terminal_closeClose terminalDestruktiv
Bildschirm
gui_observeObserve screenNur lesend
gui_zoomZoom into screenNur lesend
gui_actAct on screenDestruktiv

Hosts und Befehle

list_hosts List hosts Nur lesend

List every host in the fleet: node_id, alias, address, user, tags, scopes, notes.

Entry point for every other tool. Their host argument takes an alias or a node_id, never a bare IP. Aliases may repeat; if one is ambiguous the call fails and lists the candidate node_ids. Read-only.

ParameterTypErforderlichBeschreibung
tagsarray of string (optional)neinfilter by tag

host_facts Host facts Nur lesend

Collect basic facts: distro, kernel, load, memory, disk, current user, containers.

Run this before doing real work on a host so you do not send Debian commands to Alpine, or assume you are root. Read-only: a fixed set of probes that change nothing; needs fleet.read.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts

fleet_status Gateway status Nur lesend

Show the gateway's own state: SSH pool, shell sessions, log subscriptions, tunnels.

Read-only; lists this connection's handles only; needs fleet.read.

exec Run command Destruktiv

Run one command on one host and wait for the result.

For work measured in seconds to a couple of minutes. Anything longer (builds, backups, large transfers) belongs in job_start, which survives SSH disconnects. Each call is a fresh process: cd and export do not carry over. Use shell_open when you need that state.

Side effects are whatever the command does. Needs fleet.exec; the connection's command rules and approvals apply (a high-risk command needs confirm=true). Output is capped (32 KB by default) and the timeout clamped (60 s by default, 900 s at most).

Batch several steps into one command rather than making many round trips.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
commandstringjabash in a login shell on SSH nodes; on agent nodes the node's default shell (PowerShell on Windows) unless shell= says otherwise
cwdstring (optional)neinworking directory
envobject of string (optional)neinextra environment
timeoutinteger (minimum 1) (optional)neinseconds
sudobooleanneinrun via sudo -n (host must allow it) (Standard false)
confirmbooleanneinconfirm a high-risk command (Standard false)
shellstring (optional)neinagent nodes only: sh, bash, zsh, pwsh, powershell or cmd; the node's default when omitted (host_facts lists them)

exec_many Run command on many hosts Destruktiv

Run the same command on several hosts concurrently.

Use this for sweeps instead of looping over exec. One host failing does not stop the others. Same side effects and checks as exec on every target: the command rules check every target before any runs, and one approval covers the sweep. At most 8 hosts by default; each host's output is capped at half of exec's.

ParameterTypErforderlichBeschreibung
commandstringjacommand to run on every target
hostsarray of string (optional)neinaliases or node_ids
tagsarray of string (optional)neinselect by tag instead
timeoutinteger (minimum 1) (optional)nein
concurrencyinteger (minimum 1, maximum 32)nein (Standard 5)
confirmbooleanneinconfirm a high-risk command (Standard false)

shell_open Open shell session Öffnet oder schließt eine Sitzung

Open a persistent shell session; cwd, variables and functions persist.

bash on SSH hosts; on agent nodes the node's shell (PowerShell on Windows). For continuous debugging: cd somewhere, source an env, activate a venv, then keep working. Close it with shell_close; idle sessions are reaped after 30 min. Starts a shell process and runs nothing else; needs fleet.exec; at most 4 sessions per host; refused when the command rules are an allowlist.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
cwdstring (optional)neininitial working directory
envobject of string (optional)neininitial environment
shellstring (optional)neinagent nodes only: pwsh or powershell on Windows, bash, sh or zsh elsewhere; the node's default when omitted

shell_run Run in shell session Destruktiv

Run a command in an open session; returns exit code, merged output and cwd.

A command inside a session cannot be interrupted on its own: a timeout destroys the session. Use job_start for long work. Side effects are whatever the command does; needs fleet.exec, and the command rules, approvals and output cap of exec apply.

ParameterTypErforderlichBeschreibung
session_idstringjaid from shell_open
commandstringjacommand to run in that session
timeoutinteger (minimum 1) (optional)nein
confirmbooleanneinconfirm a high-risk command (Standard false)

shell_close Close shell session Öffnet oder schließt eine Sitzung

Close a persistent shell session and end its shell process. Needs fleet.exec.

ParameterTypErforderlichBeschreibung
session_idstringjasession to close

Dateien und Übertragungen

list_dir List directory Nur lesend

List a remote directory: type, size, mode, mtime. Optionally recursive.

Read-only; needs fleet.read. Recursion goes 4 levels deep at most and the answer holds at most 2000 entries.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
pathstringneinabsolute path, or relative to workdir (Standard ".")
depthinteger (minimum 1, maximum 4)neinrecursion depth (Standard 1)
show_hiddenbooleanneininclude dotfiles (Standard false)

read_file Read file Nur lesend

Read a remote file. Text is decoded as UTF-8; set binary=true for base64.

Read-only; needs fleet.read. Returns at most max_bytes per call, never more than the gateway's file limit (4 MB by default); continue from next_offset.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
pathstringjaremote file path
max_bytesinteger (minimum 1)neinmax bytes to read (Standard 200000)
offsetinteger (minimum 0)neinbyte offset (Standard 0)
binarybooleanneinreturn base64 for binary files (Standard false)

write_file Write file Destruktiv

Write a remote file: create, overwrite or append; parent directories are created.

Overwrites are backed up next to the file (<path>.bak-<time>) unless backup=false. Needs fleet.write and may need a person's approval; content is limited to the gateway's file limit (4 MB by default).

Config edits: read_file, write_file with backup, validate with exec (nginx -t, sshd -t), then reload.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
pathstringjatarget path; parent dirs are created
contentstringjafile content
appendbooleanneinappend instead of overwrite (Standard false)
base64_contentbooleanneincontent is base64-encoded (Standard false)
modestring (optional)neinoctal mode, e.g. '0644'
backupbooleanneinback up before overwriting (Standard true)

delete_path Delete path Destruktiv

Delete a remote file, or a directory tree with recursive=true.

Irreversible: nothing is backed up. Requires confirm=true and fleet.write, and may need a person's approval; refuses system directories (/, /etc, /usr, /home, ...).

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
pathstringjaabsolute path to delete
recursivebooleanneinrecurse into directories (Standard false)
confirmbooleanneinmust be true to proceed (Standard false)

copy_between_hosts Copy file between hosts Destruktiv

Copy a file between two hosts through the gateway.

Replaces the destination file without a backup. Needs fleet.read on the source and fleet.write on the destination; the file must fit the gateway's file limit (4 MB by default). For large files use transfer_start between agent nodes, or exec with rsync/scp directly between the hosts.

ParameterTypErforderlichBeschreibung
src_hoststringjasource host
src_pathstringjasource path
dst_hoststringjadestination host
dst_pathstringjadestination path

transfer_start Start file transfer Destruktiv

Copy a file or a whole directory between two agent nodes, of any size.

Runs in the background through the gateway; returns when done or after wait_s with a transfer_id (follow it with transfer_status). Each file appears at its target only complete and checked (SHA-256); links are skipped. Writes on the destination node and replaces files already there only with overwrite=true. Both nodes' policies apply: read (fleet.read) at the source, write (fleet.write) at the destination. For SSH hosts use copy_between_hosts or rsync with exec.

ParameterTypErforderlichBeschreibung
src_hoststringjasource agent node
src_pathstringjaa file or a directory there
dst_hoststringjadestination agent node
dst_pathstringjawhere it goes: the file's new path (a directory that exists, or a path ending in / or \, receives the file inside it), or the directory to copy into
overwritebooleanneinreplace files already there (Standard false)
wait_sinteger (minimum 0, maximum 60)neinwait this long for it to finish (Standard 20)

transfer_status Transfer status Nur lesend

Show a transfer's progress: files and bytes done, rate, what failed or was skipped.

Read-only; optionally waits up to wait_s for the transfer to finish.

ParameterTypErforderlichBeschreibung
transfer_idstringjafrom transfer_start
wait_sinteger (minimum 0, maximum 60)neinwait this long for it to finish (Standard 0)

transfer_cancel Cancel transfer Destruktiv

Stop a transfer. Files already finished stay; the one in progress does not appear.

ParameterTypErforderlichBeschreibung
transfer_idstringjafrom transfer_start

Aufträge, Logs, Tunnel und Knoten

job_start Start background job Destruktiv

Start a detached job on the node and return a job_id immediately.

The job outlives the SSH connection, the gateway restart and this conversation. stdout/stderr land in ~/.letkite/jobs/<job_id>/ on the node. Use this for builds, backups, bulk transfers, benchmarks. Side effects are whatever the command does; needs fleet.exec, and the command rules and approvals of exec apply.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
commandstringjacommand to run in the background
labelstringneinhuman-readable label
cwdstring (optional)neinworking directory
envobject of string (optional)neinextra environment
confirmbooleanneinconfirm a high-risk command (Standard false)
shellstring (optional)neinagent nodes only: sh, bash, zsh, pwsh, powershell or cmd; the node's default when omitted (host_facts lists them)

job_status Job status Nur lesend

Show a job's state: running / finished / aborted, plus exit code and output sizes.

Omit job_id to list every job on the host. Read-only; needs fleet.read.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
job_idstring (optional)neinomit to list all jobs on the host

job_output Read job output Nur lesend

Read a job's stdout or stderr. Returns next_offset for a gap-free incremental follow-up.

Read-only; needs fleet.read; at most 32 KB per call by default.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
job_idstringjaid from job_start
streamstringneinstdout or stderr (Standard "stdout")
offsetinteger (minimum 0)neinbyte offset; pass back next_offset for incremental reads (Standard 0)
max_bytesinteger (minimum 1)neinmax bytes to return (Standard 64000)
tailbooleanneinignore offset, return the tail (Standard false)

job_kill Kill job Destruktiv

Send a signal (TERM by default) to the job's whole process group.

Usually ends the job and everything it started. Needs fleet.exec.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
job_idstringjajob to terminate
signalstringneinTERM / KILL / INT / HUP (Standard "TERM")

job_purge Purge job Destruktiv

Delete a finished job's directory and logs. Running jobs are left alone.

Its output cannot be read afterwards. Needs fleet.write.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
job_idstringjafinished job to purge

log_open Open log subscription Öffnet oder schließt eine Sitzung

Start collecting a log on the gateway; read it later with log_read.

Subscribe first, trigger something with exec, then read what appeared. That ordering is not possible with exec alone. On a Windows agent node a channel gives one line per event: time, level, provider, id and message. Starts a tail (journalctl, logread, an event log reader) on the node and changes nothing else; needs fleet.read. Close it with log_close.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
pathstring (optional)neinlog file path (or unit, or channel)
unitstring (optional)neinsystemd unit (Linux)
channelstring (optional)neinWindows event log on agent nodes: System, Application, Security, or a channel such as Microsoft-Windows-PowerShell/Operational
syslogbooleanneinthe system log of an agent node without journald: OpenWrt routers (logread) (Standard false)
grepstring (optional)neinline filter, ERE
initial_linesinteger (minimum 0, maximum 500)neininitial history lines (Standard 50)

log_read Read log lines Nur lesend

Read new log lines. dropped_lines > 0 means the ring buffer overflowed.

Read-only; needs fleet.read; at most 2000 lines per call.

ParameterTypErforderlichBeschreibung
sub_idstringjaid from log_open
since_seqinteger (minimum 0)neinnext_seq from the previous call, 0 to start (Standard 0)
limitinteger (minimum 1, maximum 2000)neinmax lines (Standard 300)

log_close Close log subscription Öffnet oder schließt eine Sitzung

Close a subscription and kill the remote tail/journalctl.

ParameterTypErforderlichBeschreibung
sub_idstringjasubscription to close

tunnel_open Open tunnel Öffnet oder schließt eine Sitzung

Forward a node-local port to the gateway.

Pair with tunnel_http to reach admin interfaces bound to 127.0.0.1 on the node (Grafana, Prometheus, pprof, database HTTP gateways), or a device on the node's network. On agent nodes the node's ceiling.toml (tunnel_targets) and this connection's policy decide which addresses and ports are reachable; a refusal says so. The gateway listens on its own loopback only and closes the tunnel after 1 hour; needs fleet.admin and may need a person's approval.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
remote_portinteger (minimum 1, maximum 65535)jaremote port
remote_hoststringneintarget address as seen from the node (Standard "127.0.0.1")

tunnel_http HTTP through tunnel Destruktiv

Send one HTTP request through an open tunnel; returns status, headers and body.

Any method goes: a POST, PUT or DELETE changes whatever the service behind the tunnel does with it. Needs fleet.admin; the body read back is cut at 32 KB by default.

ParameterTypErforderlichBeschreibung
tunnel_idstringjaid from tunnel_open
pathstringneinrequest path (Standard "/")
methodstringneinHTTP method (Standard "GET")
headersobject of string (optional)neinextra headers
bodystring (optional)neinrequest body
timeoutinteger (minimum 1, maximum 120)nein (Standard 20)

tunnel_close Close tunnel Öffnet oder schließt eine Sitzung

Close a tunnel; requests through it stop working. Needs fleet.admin.

ParameterTypErforderlichBeschreibung
tunnel_idstringjatunnel to close

wake_node Wake node Destruktiv

Wake a sleeping agent node with Wake-on-LAN, through another node of the account.

The other node must be online on the same network (same subnet, same public address) and the sleeping machine's network card set to wake on a magic packet. Powers the machine on; needs fleet.exec on it and may need a person's approval.

ParameterTypErforderlichBeschreibung
hoststringjaa sleeping agent node (list_hosts says asleep or offline)
waitinteger (minimum 0, maximum 180)neinseconds to wait for it to connect (Standard 60)

wake_device Wake LAN device Destruktiv

Wake a machine with no agent (a NAS, a PC) by Wake-on-LAN.

via sends the magic packet to the broadcast address of one of its own networks. Nothing confirms the machine woke: check it after a minute, e.g. exec ping on via. Its card must be set to wake on a magic packet. Needs fleet.exec on via and may need a person's approval.

ParameterTypErforderlichBeschreibung
viastringjaan online agent node on the device's LAN, e.g. the router
macstringjathe device's hardware address, aa:bb:cc:dd:ee:ff
networkstring (optional)neinwhich of via's networks the device is on (192.168.1.0/24, or an address in it); needed when via is on more than one

approval_wait Wait for approval Nur lesend

Wait for a person to approve or turn down a call that needs approval.

Approved: call the same tool again with exactly the same arguments; the approval is for that call, once. Turned down or expired: do not retry, ask the user instead. Read-only: it only reports the decision.

ParameterTypErforderlichBeschreibung
approval_idstringjathe id a call said it is waiting for
wait_sinteger (minimum 0, maximum 60)neinwait this long at most for a decision (Standard 40)

audit_tail Audit log tail Nur lesend

Tail the gateway audit log: who ran what, where, when (newest last).

Read-only; needs fleet.admin; at most 500 records per call. The gateway's own records are all there; the sign-in service's may arrive up to 100 ms late.

ParameterTypErforderlichBeschreibung
limitinteger (minimum 1, maximum 500)neinhow many records (Standard 50)
eventstring (optional)neinonly these events: "tool", "agent" (agent.*), "console" ...
hoststring (optional)neinonly records about this host

Zeitpläne

schedule_create Create schedule Destruktiv

Run a command on a node on a schedule, e.g. a backup every night.

Every run starts the command as a detached job, with the same effects as job_start; needs fleet.exec and a plan that includes schedules. Runs under this connection: its policy, command rules and approvals apply at every run (a command that needs a person's approval asks at each run and is skipped if nobody approves). Revoking the connection stops it. Failed and missed runs are emailed to the user. Tell the user what you scheduled and when it next runs.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id from list_hosts
namestringjawhat it is, e.g. nightly backup
cronstringjafive fields "minute hour day-of-month month day-of-week", e.g. "0 3 * * *" (03:00 every day), "*/15 9-17 * * 1-5", or @daily / @hourly
commandstringjathe command; it runs as a detached job
tzstringneinIANA time zone of the times, e.g. Asia/Singapore (Standard "UTC")
shellstring (optional)neinagent nodes only: sh, bash, zsh, pwsh, powershell or cmd; the node's default when omitted (host_facts lists them)
timeout_sinteger (minimum 10, maximum 86400)neinstop the run after this long (Standard 3600)
wakebooleanneinwake the machine first when it sleeps (Wake-on-LAN through a node on its network) (Standard true)
catch_upbooleanneina run missed while the gateway was down runs late instead of being skipped (Standard false)
confirmbooleanneinconfirm a high-risk command (Standard false)

schedule_list List schedules Nur lesend

List the schedules this connection made, with their next and last run.

schedule_delete Delete schedule Destruktiv

Remove a schedule this connection made; no further runs, a run in progress finishes.

ParameterTypErforderlichBeschreibung
schedule_idstringjafrom schedule_create or schedule_list

schedule_runs Schedule run history Nur lesend

List a schedule's recent runs: when, how (woken?), exit code, the end of the output.

Also says why a run failed, was missed or skipped. Read-only.

ParameterTypErforderlichBeschreibung
schedule_idstringjafrom schedule_create or schedule_list
limitinteger (minimum 1, maximum 50)neinmost recent first (Standard 5)

Geteilte Webdienste

share_create Create web share Öffnet oder schließt eine Sitzung

Publish a web service running on a node at an https address, for this account.

A dev server or an admin page, for the people of this account: they sign in to open it. No ports opened on the node's router. The policy's tunnel_targets and the node's ceiling decide what can be shared; the person who connected you needs the permission shares.create there, and it may need a person's approval. Delete it with share_delete when done; it expires by itself after hours (24 by default, 30 days at most).

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id of the node the service runs on
portinteger (minimum 1, maximum 65535)jathe service's port on that node
target_hoststringneinthe service's address as the node sees it (Standard "127.0.0.1")
namestring (optional)neinthe address's first label: https://<name>.<share domain>; random when omitted
hoursnumber (maximum 720)neinhow long it stays up (Standard 24)

share_list List web shares Nur lesend

List the web shares this connection created.

share_delete Delete web share Destruktiv

Take a web share down: its address stops answering at once.

ParameterTypErforderlichBeschreibung
sharestringjashare_id or name from share_create

Terminals

terminal_open Open terminal Destruktiv

Open an interactive terminal (a shell on a pseudo-terminal) on a node.

For programs that need one: prompts that ask, menus, sign-ins (gh auth login), REPLs, top, less. Prefer exec or shell_run for plain commands. Give command= to start one right away. Type with terminal_send, close with terminal_close. Starts a shell, and with command= runs that command at once (command rules and approvals apply as for exec); needs fleet.exec; at most 8 terminals per connection; refused when the command rules are an allowlist.

Each answer has the output since the last call and, when the program looks like it asks something, waiting_for: {kind: choice | confirm | password | device_code | text, prompt, ...} with how to answer.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id: an agent node (Linux, macOS, Windows) or an SSH node
colsinteger (minimum 20, maximum 500)neinwidth (Standard 120)
rowsinteger (minimum 5, maximum 200)neinheight (Standard 40)
shellstring (optional)neinsh, bash or zsh; pwsh, powershell or cmd on Windows; the node's default when omitted (bash over SSH, PowerShell on Windows)
cwdstring (optional)neinworking directory
commandstring (optional)neintyped at the prompt once it shows, as terminal_send would (enter included)
untilstring (optional)neinwait until this shows up in the output (any case), or regex:<expression>; the call returns once it does, when the terminal ends, when the program stops to ask something else, or after wait_ms (up to 10 minutes); with command
wait_msinteger (minimum 0, maximum 600000)neinhow long to wait for the prompt (for the command's output with command) (Standard 3000)
confirmbooleanneinconfirm a high-risk command (Standard false)

terminal_send Type into terminal Destruktiv

Type into a terminal and return what it printed since the last call.

Returns once the output stops with the cursor after a prompt (or a menu) on screen, or with until once that text shows up. waiting_for says what the program asks, if it asks. Keystrokes act as typed (enter runs a command, ctrl+c interrupts); typed text passes the command rules and approvals; needs fleet.exec.

ParameterTypErforderlichBeschreibung
terminal_idstringjafrom terminal_open
textstring (optional)neintyped as is; end a command with keys=["enter"] or \r
keysarray of string (optional)neinpressed after the text, in order: enter, tab, escape, backspace, up, down, left, right, home, end, pageup, pagedown, delete, f1-f12, ctrl+c, ctrl+d, alt+x
untilstring (optional)neinwait until this shows up in the output (any case), or regex:<expression>; the call returns once it does, when the terminal ends, when the program stops to ask something else, or after wait_ms (up to 10 minutes)
wait_msinteger (minimum 0, maximum 600000)neinwait this long at most: for the output to stop with a prompt on screen, or for until (Standard 3000)
confirmbooleanneinconfirm a high-risk command (Standard false)

terminal_read Read terminal output Nur lesend

Show what a terminal printed since the last call, without typing.

With until, wait for it: a sign-in finishing, a build printing "done". Read-only; needs fleet.read.

ParameterTypErforderlichBeschreibung
terminal_idstringjafrom terminal_open
untilstring (optional)neinwait until this shows up in the output (any case), or regex:<expression>; the call returns once it does, when the terminal ends, when the program stops to ask something else, or after wait_ms (up to 10 minutes)
wait_msinteger (minimum 0, maximum 600000)neinwait this long at most for output (for until) (Standard 0)

terminal_ask Ask person to type Destruktiv

Hand the program's next answer to the person who connected you.

A password, a passphrase, a one-time code, anything that should not pass through the conversation. They get a notification (phone, email) and type it in the LetKite console; it goes into the terminal followed by enter. You get what the program printed after it and how many characters were typed, never the text (masked if the program shows it). Needs fleet.exec.

Waits for them up to wait_ms, sending progress meanwhile; if they have not answered by then, call terminal_ask again to keep waiting for the same request (it stays open 15 minutes). Tell the user in the conversation that the console is waiting for them.

ParameterTypErforderlichBeschreibung
terminal_idstringjafrom terminal_open
promptstring (maxLength 300) (optional)neinwhat to tell the person, when the program's own prompt does not say it
untilstring (optional)neinwait until this shows up in the output (any case), or regex:<expression>; the call returns once it does, when the terminal ends, when the program stops to ask something else, or after wait_ms (up to 10 minutes); after the answer
wait_msinteger (minimum 1000, maximum 600000)neinhow long to wait for the person (then for the output) (Standard 300000)

terminal_resize Resize terminal Öffnet oder schließt eine Sitzung

Change a terminal's size; full-screen programs redraw.

ParameterTypErforderlichBeschreibung
terminal_idstringjafrom terminal_open
colsinteger (minimum 20, maximum 500)jawidth
rowsinteger (minimum 5, maximum 200)jaheight

terminal_close Close terminal Destruktiv

Close a terminal; its shell and what runs in it end. Needs fleet.exec.

ParameterTypErforderlichBeschreibung
terminal_idstringjafrom terminal_open

Bildschirm

gui_observe Observe screen Nur lesend

Wird nur aufgelistet, wenn die Richtlinie der Verbindung die Bildschirm-Tools einschaltet.

Look at a window on an agent node (Windows), or the whole screen: who and what is on it.

The tree lists elements with short ids (e3) to use in gui_act; prefer it to images, which cost far more context. The first line says whether the desktop is active, locked or taken over at the machine. Read-only: nothing on the desktop changes; needs the connection's gui level observe or act.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id of an agent node (list_hosts)
windowstring (optional)neinwindow id from a previous gui_observe (w1); default: the focused window
appstring (optional)neinor the app whose window to use, as the window list names it
screenbooleanneinor the whole screen, every display: a picture only, and only for a connection that may see every app; a point in it works in gui_act on the window there (Standard false)
modestringneintree: the accessibility tree, cheapest (default); text: OCR words with positions, for canvases and remote desktops; image: a screenshot; marks: both (Standard "tree")
regionarray of integer (optional)nein[x, y, width, height] in screen pixels: only this part
tree_rootstring (optional)neinonly this element's subtree, e.g. the next page of a long list
child_offsetinteger (minimum 0)neinwith tree_root: from this child on (Standard 0)
max_nodesinteger (minimum 10, maximum 2000) (optional)neinelements at most
include_textbooleanneinalso static text elements (Standard false)
last_image_idstring (optional)neinimage id you already have: if nothing changed, no new image is sent
max_long_edgeinteger (minimum 200, maximum 2576) (optional)neinimage size limit, pixels

gui_zoom Zoom into screen Nur lesend

Wird nur aufgelistet, wenn die Richtlinie der Verbindung die Bildschirm-Tools einschaltet.

Capture part of a window (or of the screen) at its own resolution, to read small text.

Read-only; same permission as gui_observe.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id of an agent node (list_hosts)
regionarray of integerja[x, y, width, height] in screen pixels
windowstring (optional)neinwindow id from a previous gui_observe (w1); default: the focused window
appstring (optional)neinor the app whose window to use, as the window list names it
screenbooleanneinor the whole screen, every display: a picture only, and only for a connection that may see every app; a point in it works in gui_act on the window there (Standard false)

gui_act Act on screen Destruktiv

Wird nur aufgelistet, wenn die Richtlinie der Verbindung die Bildschirm-Tools einschaltet.

Click, type and press keys in a window on an agent node, by element ids from gui_observe.

Points in an image gui_observe sent work too. This acts as a person at the machine would: whatever a click or keystroke does (send, delete, close) happens. Needs the connection's gui level act and may need a person's approval.

Batch the steps of one task; waiting happens on the node ({"wait": ..}), so there is no need to observe in between. Returns what changed.

ParameterTypErforderlichBeschreibung
hoststringjaalias or node_id of an agent node (list_hosts)
stepsarray of objectjarun in order on the node, stopping at the first that fails: {"click": "e3"} (or "double_click", "right_click"; "button", "count", "modifiers"), {"click": {"image": "i2", "x": 40, "y": 12}}, {"type": "text", "into": "e2", "replace": true}, {"key": "ctrl+s", "repeat": 1}, {"scroll": "e4", "dy": 3} (or "until_visible": "e40"), {"drag": "e10", "to": "e20"}, {"set_value": "e2", "value": "x"}, {"focus": "w2"}, {"launch": "app", "args": []}, {"close": "w2"} (or true: the target window; as its close button does), {"wait": {"appears": "e7"}} (or {"role": "dialog", "name": "Save"}; "disappears", "title": "regex", "stable_ms": 500; "timeout_ms")
windowstring (optional)neinwindow id from a previous gui_observe (w1); default: the focused window
appstring (optional)neinor the app whose window to use, as the window list names it
observestringneinwhat to return afterwards: delta (what changed, default), tree, image or none (Standard "delta")
base_snapshotstring (optional)neinthe delta is against this snapshot; default: the latest
timeoutinteger (minimum 1, maximum 300)neinseconds for all steps (Standard 60)