Files
NetMesh/infrastructure/ai/harness/generated/cattyToolSpecs.json
zhaolei 3c72efcb7f
Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled
[Init] Initial commit - NetMesh terminal manager
2026-09-13 18:24:01 +08:00

2369 lines
72 KiB
JSON

[
{
"capabilityId": "session.environment",
"toolName": "get_environment",
"rpcMethod": "netcatty/getContext",
"localExecution": false,
"description": "List scoped terminal sessions available to the agent.",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "attachment.list",
"toolName": "list_attachments",
"rpcMethod": "netcatty/listAttachments",
"localExecution": false,
"description": "List user-attached files in the current AI chat scope.",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "attachment.read",
"toolName": "read_attachment",
"rpcMethod": "netcatty/readAttachment",
"localExecution": false,
"description": "Read a user-attached file from the current AI chat scope.",
"inputShape": {
"filePath": {
"type": "string",
"optional": true,
"description": "Exact local attachment path."
},
"filename": {
"type": "string",
"optional": true,
"description": "Attachment filename from list_attachments."
}
},
"policy": {
"write": false,
"sensitiveRead": true,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "session.close",
"toolName": "session_close",
"rpcMethod": "session/close",
"localExecution": false,
"description": "Close a terminal session previously opened by host_open in the current AI scope.",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "The session ID returned by host_open."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": true,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "terminal.execute",
"toolName": "terminal_execute",
"rpcMethod": "netcatty/exec",
"localExecution": false,
"description": "Execute a short command in a terminal session and wait for completion. Use only for commands expected to finish within about 60 seconds. For long-running commands use terminal_start and terminal_poll. Commands run in an isolated subshell of the visible terminal: the user sees the output live, but shell state such as cd, export, or set does not persist between calls — use absolute paths or combine cd with the command (cd /path && cmd).",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "The terminal session ID to execute on."
},
"command": {
"type": "string",
"optional": false,
"description": "The shell command to execute in the target session."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "terminal.start",
"toolName": "terminal_start",
"rpcMethod": "netcatty/jobStart",
"localExecution": false,
"description": "Start a long-running command in a terminal session. Prefer for builds, scans, log-following, or anything likely to exceed about 2 minutes. Shell state such as cd or export does not persist between calls — combine cd with the command.",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "The terminal session ID to start a long-running command on."
},
"command": {
"type": "string",
"optional": false,
"description": "The command to start in the target session."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "terminal.poll",
"toolName": "terminal_poll",
"rpcMethod": "netcatty/jobPoll",
"localExecution": false,
"description": "Poll incremental output from a long-running terminal job. Wait at least about 30 seconds between polls unless output justifies checking sooner.",
"inputShape": {
"jobId": {
"type": "string",
"optional": false,
"description": "The background job ID returned by terminal_start."
},
"offset": {
"type": "number",
"optional": true,
"description": "Character offset from a previous poll (default 0)."
}
},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "terminal.stop",
"toolName": "terminal_stop",
"rpcMethod": "netcatty/jobStop",
"localExecution": false,
"description": "Stop a long-running terminal job.",
"inputShape": {
"jobId": {
"type": "string",
"optional": false,
"description": "The background job ID returned by terminal_start."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": true,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "sftp.list",
"toolName": "sftp_list",
"rpcMethod": "netcatty/sftp/list",
"localExecution": false,
"description": "List a remote directory over the session file backend (SFTP or SCP-mode).",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "SFTP session ID."
},
"path": {
"type": "string",
"optional": false,
"description": "Remote directory path."
}
},
"policy": {
"write": false,
"sensitiveRead": true,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "sftp.read",
"toolName": "sftp_read_file",
"rpcMethod": "netcatty/sftp/read",
"localExecution": false,
"description": "Read a remote file over the session file backend (SFTP or SCP-mode).",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "SFTP session ID."
},
"path": {
"type": "string",
"optional": false,
"description": "Remote file path to read."
}
},
"policy": {
"write": false,
"sensitiveRead": true,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "sftp.write",
"toolName": "sftp_write_file",
"rpcMethod": "netcatty/sftp/write",
"localExecution": false,
"description": "Write a remote file over the session file backend (SFTP or SCP-mode).",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "SFTP session ID."
},
"path": {
"type": "string",
"optional": false,
"description": "Remote file path to write."
},
"content": {
"type": "string",
"optional": false,
"description": "File content to write."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "sftp.download",
"toolName": "sftp_download",
"rpcMethod": "netcatty/sftp/download",
"localExecution": false,
"description": "Download a remote file to a local path.",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "SFTP session ID."
},
"remotePath": {
"type": "string",
"optional": false,
"description": "Remote file path to download."
},
"localPath": {
"type": "string",
"optional": false,
"description": "Local destination path."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "sftp.upload",
"toolName": "sftp_upload",
"rpcMethod": "netcatty/sftp/upload",
"localExecution": false,
"description": "Upload a local file to a remote path.",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "SFTP session ID."
},
"localPath": {
"type": "string",
"optional": false,
"description": "Local file path to upload."
},
"remotePath": {
"type": "string",
"optional": false,
"description": "Remote destination path."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "sftp.stat",
"toolName": "sftp_stat",
"rpcMethod": "netcatty/sftp/stat",
"localExecution": false,
"description": "Get remote file metadata over the session file backend (SFTP or SCP-mode).",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "SFTP session ID."
},
"path": {
"type": "string",
"optional": false,
"description": "Remote path to stat."
}
},
"policy": {
"write": false,
"sensitiveRead": true,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "sftp.home",
"toolName": "sftp_home",
"rpcMethod": "netcatty/sftp/home",
"localExecution": false,
"description": "Get the remote home directory for a session.",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "SFTP session ID."
}
},
"policy": {
"write": false,
"sensitiveRead": true,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "sftp.mkdir",
"toolName": "sftp_mkdir",
"rpcMethod": "netcatty/sftp/mkdir",
"localExecution": false,
"description": "Create a remote directory over the session file backend (SFTP or SCP-mode).",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "SFTP session ID."
},
"path": {
"type": "string",
"optional": false,
"description": "Remote directory path to create."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "sftp.delete",
"toolName": "sftp_delete",
"rpcMethod": "netcatty/sftp/delete",
"localExecution": false,
"description": "Delete a remote file or directory over the session file backend (SFTP or SCP-mode).",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "SFTP session ID."
},
"path": {
"type": "string",
"optional": false,
"description": "Remote file or directory path to delete."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "sftp.rename",
"toolName": "sftp_rename",
"rpcMethod": "netcatty/sftp/rename",
"localExecution": false,
"description": "Rename a remote file or directory over the session file backend (SFTP or SCP-mode).",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "SFTP session ID."
},
"oldPath": {
"type": "string",
"optional": false,
"description": "Current remote path."
},
"newPath": {
"type": "string",
"optional": false,
"description": "New remote path."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "sftp.chmod",
"toolName": "sftp_chmod",
"rpcMethod": "netcatty/sftp/chmod",
"localExecution": false,
"description": "Change remote file permissions over the session file backend (SFTP or SCP-mode).",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "SFTP session ID."
},
"path": {
"type": "string",
"optional": false,
"description": "Remote file path."
},
"mode": {
"type": "string",
"optional": false,
"description": "Octal permission mode (e.g. 755)."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.host.get",
"toolName": "host_get",
"rpcMethod": "vault/host/get",
"localExecution": false,
"description": "Get host metadata from the vault.",
"inputShape": {
"hostId": {
"type": "string",
"optional": false,
"description": "Vault host ID."
}
},
"policy": {
"write": false,
"sensitiveRead": true,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.host.list",
"toolName": "vault_hosts_list",
"rpcMethod": "vault/hosts/list",
"localExecution": false,
"description": "List saved hosts in the vault (metadata only — no passwords or keys).",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": true,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.hosts.create",
"toolName": "vault_hosts_create",
"rpcMethod": "vault/hosts/create",
"localExecution": false,
"description": "Create vault hosts from structured host objects. Use when the user wants to add/create a host (Vault → Hosts). NOT for Vault → Notes sidebar documentation. Use when the user wants to add/create a host in Vault → Hosts (创建主机、SSH 连接凭据). NOT for Vault → Notes sidebar docs. Put SSH password in password, or a local private-key file path in keyPath. If that key is encrypted and the user supplied its passphrase, put it in passphrase so later connections do not prompt. Put long remarks/admin tables in host notes. Never fall back to vault_notes_create if this fails.",
"inputShape": {
"hosts": {
"type": "string",
"optional": false,
"description": "JSON array of host objects you extracted from the user's text. Each object: hostname (required; host/ip aliases accepted), label (name alias accepted), port, username, password, keyPath or keypath (local private-key file path), passphrase (saved passphrase for that key path), group, tags (array or comma-separated string), notes (Host Details remarks — NOT Vault sidebar Notes), protocol (ssh|telnet|local), os (linux|windows|macos)."
},
"dryRun": {
"type": "string",
"optional": true,
"description": "Set to true to validate and preview without writing to the vault."
},
"skipDuplicates": {
"type": "string",
"optional": true,
"description": "Set to false to create even when a matching host already exists (default true)."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.host.update",
"toolName": "vault_hosts_update",
"rpcMethod": "vault/hosts/update",
"localExecution": false,
"description": "Update selected fields on an existing vault host. Use vault_hosts_list first to resolve the hostId. Update only fields the user requested. Use vault_hosts_list first to resolve hostId. Empty group, tags, notes, password, keyPath, or passphrase values clear those fields or saved credentials.",
"inputShape": {
"hostId": {
"type": "string",
"optional": false,
"description": "Vault host ID from vault_hosts_list."
},
"label": {
"type": "string",
"optional": true,
"description": "New display name."
},
"name": {
"type": "string",
"optional": true,
"description": "Alias for label."
},
"hostname": {
"type": "string",
"optional": true,
"description": "New hostname or IP address."
},
"host": {
"type": "string",
"optional": true,
"description": "Alias for hostname."
},
"ip": {
"type": "string",
"optional": true,
"description": "Alias for hostname."
},
"port": {
"type": "number",
"optional": true,
"description": "New connection port (1-65535)."
},
"username": {
"type": "string",
"optional": true,
"description": "New login username. Clears any reusable identity binding so this value takes effect."
},
"password": {
"type": "string",
"optional": true,
"description": "New password without changing key-based login. Password identities are detached so the new value takes effect. Empty string clears it and blocks inherited saved passwords. Pair with keyPath set to an empty string to switch from key login to password login."
},
"savePassword": {
"type": "string",
"optional": true,
"description": "Set to true or false to enable or disable saved passwords. Pass true when setting a new password after clearing one."
},
"keyPath": {
"type": "string",
"optional": true,
"description": "Local private-key file path. Empty string clears and blocks an inherited path."
},
"keypath": {
"type": "string",
"optional": true,
"description": "Alias for keyPath."
},
"passphrase": {
"type": "string",
"optional": true,
"description": "Saved passphrase for the host's local private-key path. Empty string clears the saved passphrase."
},
"group": {
"type": "string",
"optional": true,
"description": "New group path. Empty string moves the host to the root."
},
"tags": {
"type": "string",
"optional": true,
"description": "JSON array or comma-separated tag names. Empty string clears tags."
},
"notes": {
"type": "string",
"optional": true,
"description": "Host Details remarks. Empty string clears notes."
},
"protocol": {
"type": "string",
"optional": true,
"description": "New protocol: ssh, telnet, local, or serial."
},
"os": {
"type": "string",
"optional": true,
"description": "Operating system override: auto (default), linux, windows, macos, freebsd, or unknown. Use auto to use detected system information; network device mode is separate."
},
"identityId": {
"type": "string",
"optional": true,
"description": "Reusable identity ID from vault_identities_list. Empty string detaches the identity."
},
"jumpHostIds": {
"type": "string",
"optional": true,
"description": "JSON array of vault host IDs in jump order. Empty array clears the chain."
},
"proxyProfileId": {
"type": "string",
"optional": true,
"description": "Reusable proxy ID from vault_proxy_profiles_list. Empty string clears it."
},
"startupCommand": {
"type": "string",
"optional": true,
"description": "Command to run after connecting. Empty string clears it."
},
"startupCommandRunMode": {
"type": "string",
"optional": true,
"description": "paste or lineDelay."
},
"environmentVariables": {
"type": "string",
"optional": true,
"description": "JSON object or array of {name,value} entries. Empty object clears them."
},
"moshEnabled": {
"type": "string",
"optional": true,
"description": "true or false."
},
"moshServerPath": {
"type": "string",
"optional": true,
"description": "Optional mosh-server path."
},
"etEnabled": {
"type": "string",
"optional": true,
"description": "true or false."
},
"etPort": {
"type": "number",
"optional": true,
"description": "Eternal Terminal server port."
},
"serialConfig": {
"type": "string",
"optional": true,
"description": "JSON object for serial connections: path, baudRate, and optional dataBits, stopBits, parity, flowControl, localEcho, lineMode, backspaceBehavior (default or ctrl-h). Existing backspaceBehavior is preserved when omitted."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.host.delete",
"toolName": "vault_hosts_delete",
"rpcMethod": "vault/hosts/delete",
"localExecution": false,
"description": "Delete a saved vault host by id. Use vault_hosts_list first to resolve the hostId. Permanently deletes one saved host. Use vault_hosts_list first to resolve hostId and rely on the normal write approval flow before deleting.",
"inputShape": {
"hostId": {
"type": "string",
"optional": false,
"description": "Vault host ID from vault_hosts_list."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.host.import",
"toolName": "vault_hosts_import",
"rpcMethod": "vault/hosts/import",
"localExecution": false,
"description": "Parse known host export file formats (PuTTY, MobaXterm, CSV, SecureCRT, ssh_config) into vault hosts. For arbitrary unstructured text, map to host objects and use vault_hosts_create instead. Only for text in known export formats (PuTTY reg, MobaXterm ini, CSV template, SecureCRT, ssh_config). If attached host text is unknown or auto-detection fails, use read_attachment content, extract fields yourself, and call vault_hosts_create.",
"inputShape": {
"format": {
"type": "string",
"optional": false,
"description": "Import format: csv, putty, mobaxterm, securecrt, ssh_config, or auto to detect from text."
},
"text": {
"type": "string",
"optional": false,
"description": "Exported host data text to import."
},
"dryRun": {
"type": "string",
"optional": true,
"description": "Set to true to parse and preview without writing to the vault."
},
"skipDuplicates": {
"type": "string",
"optional": true,
"description": "Set to false to import even when a matching host already exists (default true)."
},
"fileName": {
"type": "string",
"optional": true,
"description": "Optional source file name (helps SecureCRT .ini parsing)."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.host.notes.get",
"toolName": "host_notes_get",
"rpcMethod": "vault/host/notes/get",
"localExecution": false,
"description": "Read host metadata notes attached to a saved host (Host Details panel — not Vault sidebar Notes). Host metadata notes on a saved host — not Vault → Notes sidebar entries.",
"inputShape": {
"hostId": {
"type": "string",
"optional": false,
"description": "Vault host ID."
}
},
"policy": {
"write": false,
"sensitiveRead": true,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.host.notes.set",
"toolName": "host_notes_set",
"rpcMethod": "vault/host/notes/set",
"localExecution": false,
"description": "Update host metadata notes on a saved host (Host Details panel — not Vault sidebar Notes). Host metadata notes on a saved host — not Vault → Notes sidebar entries. Prefer vault_notes_create/update when the user wants vault notes they can open in the Notes sidebar.",
"inputShape": {
"hostId": {
"type": "string",
"optional": false,
"description": "Vault host ID."
},
"notes": {
"type": "string",
"optional": false,
"description": "Host metadata notes (Host Details — not Vault sidebar Notes)."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.note.list",
"toolName": "vault_notes_list",
"rpcMethod": "vault/notes/list",
"localExecution": false,
"description": "List notes in Vault → Notes (markdown notes visible in the vault sidebar).",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.note.get",
"toolName": "vault_notes_get",
"rpcMethod": "vault/notes/get",
"localExecution": false,
"description": "Read or search a Vault → Notes entry by exact id, at most 6000 characters per call. Content is only the returned range, not necessarily the whole note. Follow nextOffset with expectedUpdatedAt until null for a complete read; query searches only return matching excerpts. Read every range without query before summarizing the whole note or replacing its content; never treat unread text as absent. For long notes, retain section summaries rather than repeatedly loading all ranges. If the note changed, restart.",
"inputShape": {
"noteId": {
"type": "string",
"optional": false,
"description": "Vault note ID from vault_notes_list."
},
"offset": {
"type": "number",
"optional": true,
"description": "Zero-based UTF-16 offset; default 0. Continue with returned nextOffset."
},
"maxChars": {
"type": "number",
"optional": true,
"description": "Maximum excerpt length in UTF-16 units, at least 2; default and hard cap 6000."
},
"query": {
"type": "string",
"optional": true,
"description": "Optional case-sensitive literal search, 1-200 UTF-16 units. Returns an excerpt starting at the next match at/after offset; matchOffset=null means no match. Keep query when continuing search."
},
"expectedUpdatedAt": {
"type": "number",
"optional": true,
"description": "Pass note.updatedAt from the first read on subsequent reads to detect changes; restart if it changed."
}
},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.note.create",
"toolName": "vault_notes_create",
"rpcMethod": "vault/notes/create",
"localExecution": false,
"description": "Create a note in Vault → Notes sidebar (markdown documentation). NOT for adding SSH hosts — use vault_hosts_create for that. Use ONLY when the user wants markdown documentation in Vault → Notes sidebar (保险箱笔记). Do NOT use when the user asked to create/add a host — use vault_hosts_create instead.",
"inputShape": {
"title": {
"type": "string",
"optional": false,
"description": "Note title shown in Vault → Notes."
},
"content": {
"type": "string",
"optional": false,
"description": "Markdown note body."
},
"group": {
"type": "string",
"optional": true,
"description": "Optional folder path (e.g. infra/prod)."
},
"linkedHostIds": {
"type": "string",
"optional": true,
"description": "Optional JSON array of vault host IDs to link."
},
"tags": {
"type": "string",
"optional": true,
"description": "Optional JSON array of tag strings."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.note.update",
"toolName": "vault_notes_update",
"rpcMethod": "vault/notes/update",
"localExecution": false,
"description": "Update an existing Vault → Notes entry by id. Update an existing Vault → Notes entry (visible in the vault notes sidebar).",
"inputShape": {
"noteId": {
"type": "string",
"optional": false,
"description": "Vault note ID to update."
},
"title": {
"type": "string",
"optional": true,
"description": "New title."
},
"content": {
"type": "string",
"optional": true,
"description": "New markdown body."
},
"group": {
"type": "string",
"optional": true,
"description": "New folder path."
},
"linkedHostIds": {
"type": "string",
"optional": true,
"description": "Optional JSON array of vault host IDs to link."
},
"tags": {
"type": "string",
"optional": true,
"description": "Optional JSON array of tag strings."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.note.delete",
"toolName": "vault_notes_delete",
"rpcMethod": "vault/notes/delete",
"localExecution": false,
"description": "Delete a Vault → Notes entry by id.",
"inputShape": {
"noteId": {
"type": "string",
"optional": false,
"description": "Vault note ID to delete."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.identity.list",
"toolName": "vault_identities_list",
"rpcMethod": "vault/identities/list",
"localExecution": false,
"description": "List reusable vault identities without passwords, private keys, or passphrases.",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": true,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.proxyProfile.list",
"toolName": "vault_proxy_profiles_list",
"rpcMethod": "vault/proxyProfiles/list",
"localExecution": false,
"description": "List reusable proxy profiles without credentials.",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": true,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.group.list",
"toolName": "vault_groups_list",
"rpcMethod": "vault/groups/list",
"localExecution": false,
"description": "List vault groups and their safe default settings.",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.group.create",
"toolName": "vault_groups_create",
"rpcMethod": "vault/groups/create",
"localExecution": false,
"description": "Create a vault group with optional default connection settings.",
"inputShape": {
"path": {
"type": "string",
"optional": false,
"description": "New group path, for example prod/web."
},
"defaults": {
"type": "string",
"optional": true,
"description": "JSON object of group defaults: username, identityId, proxyProfileId, jumpHostIds, startupCommand, environmentVariables, moshEnabled, moshServerPath, etEnabled, etPort."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.group.update",
"toolName": "vault_groups_update",
"rpcMethod": "vault/groups/update",
"localExecution": false,
"description": "Update or rename a vault group and its default connection settings.",
"inputShape": {
"path": {
"type": "string",
"optional": false,
"description": "Existing group path."
},
"newPath": {
"type": "string",
"optional": true,
"description": "Optional replacement path to rename or move the group and descendants."
},
"defaults": {
"type": "string",
"optional": true,
"description": "JSON object containing only group defaults to change."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.group.delete",
"toolName": "vault_groups_delete",
"rpcMethod": "vault/groups/delete",
"localExecution": false,
"description": "Delete a vault group, moving its hosts to the root unless deleteHosts is true.",
"inputShape": {
"path": {
"type": "string",
"optional": false,
"description": "Group path to delete, including descendants."
},
"deleteHosts": {
"type": "string",
"optional": true,
"description": "Set true to delete hosts in the group; default moves them to the root."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.snippets.list",
"toolName": "snippets_list",
"rpcMethod": "vault/snippets/list",
"localExecution": false,
"description": "List code snippets stored in the vault.",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.snippets.get",
"toolName": "snippets_get",
"rpcMethod": "vault/snippets/get",
"localExecution": false,
"description": "Get a single code snippet from the vault.",
"inputShape": {
"snippetId": {
"type": "string",
"optional": false,
"description": "Snippet ID."
}
},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.snippets.run",
"toolName": "snippets_run",
"rpcMethod": "vault/snippets/run",
"localExecution": false,
"description": "Run a vault snippet or automation script in a terminal session. Text snippets paste shell commands; scripts (kind=script) run via the nct JavaScript runtime. Text snippets (kind=snippet) paste shell commands with optional {{variables}}. Scripts (kind=script) run via nct JavaScript runtime — use scripts_run for script-only workflows.",
"inputShape": {
"snippetId": {
"type": "string",
"optional": false,
"description": "Snippet ID to run."
},
"sessionId": {
"type": "string",
"optional": false,
"description": "Terminal session ID to execute on."
},
"variables": {
"type": "string",
"optional": true,
"description": "JSON object of snippet variable values."
},
"wait": {
"type": "string",
"optional": true,
"description": "Set to true to wait for script completion when kind=script."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.snippets.create",
"toolName": "snippets_create",
"rpcMethod": "vault/snippets/create",
"localExecution": false,
"description": "Create a vault snippet or automation script (set kind=script for nct automation). Create vault snippets (shell text) or scripts (kind=script, nct JavaScript). For multi-step terminal automation use kind=script and call scripts_reference.",
"inputShape": {
"label": {
"type": "string",
"optional": false,
"description": "Snippet or script label."
},
"content": {
"type": "string",
"optional": false,
"description": "Snippet command text or script JavaScript source."
},
"kind": {
"type": "string",
"optional": true,
"description": "snippet (default) or script for nct automation."
},
"tags": {
"type": "string",
"optional": true,
"description": "Optional JSON array of tag strings."
},
"targets": {
"type": "string",
"optional": true,
"description": "Optional JSON array of vault host IDs."
},
"targetGroups": {
"type": "string",
"optional": true,
"description": "Optional JSON array of dynamic vault group paths."
},
"targetsAllHosts": {
"type": "string",
"optional": true,
"description": "Set true to target all connectable hosts."
},
"package": {
"type": "string",
"optional": true,
"description": "Optional vault package path."
},
"shortkey": {
"type": "string",
"optional": true,
"description": "Optional keyboard shortcut."
},
"noAutoRun": {
"type": "string",
"optional": true,
"description": "For text snippets: paste without pressing Enter."
},
"multiLineRunMode": {
"type": "string",
"optional": true,
"description": "For multi-line text snippets: paste (default) or lineDelay."
},
"language": {
"type": "string",
"optional": true,
"description": "javascript or python (UI label only; runtime is JS)."
},
"description": {
"type": "string",
"optional": true,
"description": "Optional script description."
},
"trigger": {
"type": "string",
"optional": true,
"description": "manual, onConnect, or onOutput (scripts)."
},
"triggerPattern": {
"type": "string",
"optional": true,
"description": "Regex when trigger=onOutput."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.snippets.update",
"toolName": "snippets_update",
"rpcMethod": "vault/snippets/update",
"localExecution": false,
"description": "Update an existing vault snippet or automation script by id.",
"inputShape": {
"snippetId": {
"type": "string",
"optional": false,
"description": "Snippet ID to update."
},
"label": {
"type": "string",
"optional": true,
"description": "New label."
},
"content": {
"type": "string",
"optional": true,
"description": "New command or script source."
},
"kind": {
"type": "string",
"optional": true,
"description": "snippet or script."
},
"tags": {
"type": "string",
"optional": true,
"description": "Optional JSON array of tag strings."
},
"targets": {
"type": "string",
"optional": true,
"description": "Optional JSON array of vault host IDs."
},
"targetGroups": {
"type": "string",
"optional": true,
"description": "Optional JSON array of dynamic vault group paths."
},
"targetsAllHosts": {
"type": "string",
"optional": true,
"description": "Set true to target all connectable hosts."
},
"package": {
"type": "string",
"optional": true,
"description": "Optional vault package path."
},
"shortkey": {
"type": "string",
"optional": true,
"description": "Optional keyboard shortcut."
},
"noAutoRun": {
"type": "string",
"optional": true,
"description": "For text snippets: paste without pressing Enter."
},
"multiLineRunMode": {
"type": "string",
"optional": true,
"description": "For multi-line text snippets: paste (default) or lineDelay."
},
"language": {
"type": "string",
"optional": true,
"description": "javascript or python."
},
"description": {
"type": "string",
"optional": true,
"description": "Optional script description."
},
"trigger": {
"type": "string",
"optional": true,
"description": "manual, onConnect, or onOutput."
},
"triggerPattern": {
"type": "string",
"optional": true,
"description": "Regex when trigger=onOutput."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.snippets.delete",
"toolName": "snippets_delete",
"rpcMethod": "vault/snippets/delete",
"localExecution": false,
"description": "Delete a vault snippet or automation script by id.",
"inputShape": {
"snippetId": {
"type": "string",
"optional": false,
"description": "Snippet ID to delete."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.scripts.list",
"toolName": "scripts_list",
"rpcMethod": "vault/scripts/list",
"localExecution": false,
"description": "List automation scripts (kind=script) in the vault.",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.scripts.get",
"toolName": "scripts_get",
"rpcMethod": "vault/scripts/get",
"localExecution": false,
"description": "Get a single automation script including JavaScript source.",
"inputShape": {
"scriptId": {
"type": "string",
"optional": false,
"description": "Automation script ID."
}
},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.scripts.create",
"toolName": "scripts_create",
"rpcMethod": "vault/scripts/create",
"localExecution": false,
"description": "Create an automation script using the nct JavaScript API. Call scripts_reference first when authoring nct automation. Create nct automation scripts. Call scripts_reference first to learn the nct API, triggers, and source wrapping rules.",
"inputShape": {
"label": {
"type": "string",
"optional": false,
"description": "Script label."
},
"content": {
"type": "string",
"optional": false,
"description": "JavaScript automation source using nct.* API."
},
"tags": {
"type": "string",
"optional": true,
"description": "Optional JSON array of tag strings."
},
"targets": {
"type": "string",
"optional": true,
"description": "Optional JSON array of vault host IDs."
},
"targetGroups": {
"type": "string",
"optional": true,
"description": "Optional JSON array of dynamic vault group paths."
},
"targetsAllHosts": {
"type": "string",
"optional": true,
"description": "Set true to target all connectable hosts."
},
"package": {
"type": "string",
"optional": true,
"description": "Optional vault package path."
},
"description": {
"type": "string",
"optional": true,
"description": "Optional script description."
},
"trigger": {
"type": "string",
"optional": true,
"description": "manual (default), onConnect, or onOutput."
},
"triggerPattern": {
"type": "string",
"optional": true,
"description": "Regex when trigger=onOutput."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.scripts.update",
"toolName": "scripts_update",
"rpcMethod": "vault/scripts/update",
"localExecution": false,
"description": "Update an automation script by id (partial fields).",
"inputShape": {
"scriptId": {
"type": "string",
"optional": false,
"description": "Script ID to update."
},
"label": {
"type": "string",
"optional": true,
"description": "New label."
},
"content": {
"type": "string",
"optional": true,
"description": "New JavaScript source."
},
"tags": {
"type": "string",
"optional": true,
"description": "Optional JSON array of tag strings."
},
"targets": {
"type": "string",
"optional": true,
"description": "Optional JSON array of vault host IDs."
},
"targetGroups": {
"type": "string",
"optional": true,
"description": "Optional JSON array of dynamic vault group paths."
},
"targetsAllHosts": {
"type": "string",
"optional": true,
"description": "Set true to target all connectable hosts."
},
"package": {
"type": "string",
"optional": true,
"description": "Optional vault package path."
},
"description": {
"type": "string",
"optional": true,
"description": "Optional script description."
},
"trigger": {
"type": "string",
"optional": true,
"description": "manual, onConnect, or onOutput."
},
"triggerPattern": {
"type": "string",
"optional": true,
"description": "Regex when trigger=onOutput."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.scripts.delete",
"toolName": "scripts_delete",
"rpcMethod": "vault/scripts/delete",
"localExecution": false,
"description": "Delete an automation script and remove host connect bindings.",
"inputShape": {
"scriptId": {
"type": "string",
"optional": false,
"description": "Script ID to delete."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.scripts.run",
"toolName": "scripts_run",
"rpcMethod": "vault/scripts/run",
"localExecution": false,
"description": "Run an automation script in a terminal session via the nct runtime. Set wait=true to block until completion. Runs automation scripts in the nct JavaScript sandbox. Use wait=true to block until completion. Prefer over terminal_execute for await nct.screen.* workflows.",
"inputShape": {
"scriptId": {
"type": "string",
"optional": false,
"description": "Script ID to run."
},
"sessionId": {
"type": "string",
"optional": false,
"description": "Terminal session ID."
},
"wait": {
"type": "string",
"optional": true,
"description": "Set to true to block until the script completes."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.scripts.reference",
"toolName": "scripts_reference",
"rpcMethod": "vault/scripts/reference",
"localExecution": false,
"description": "Return Netcatty automation script syntax: nct API, triggers, host targeting, and source wrapping rules. Returns full Netcatty automation script syntax reference (nct API, triggers, host targeting). Read before authoring scripts.",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.scripts.runs.list",
"toolName": "scripts_runs_list",
"rpcMethod": "vault/scripts/runs/list",
"localExecution": false,
"description": "List automation script runs (optionally filter by sessionId).",
"inputShape": {
"sessionId": {
"type": "string",
"optional": true,
"description": "Optional terminal session ID filter."
}
},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.scripts.run.stop",
"toolName": "scripts_run_stop",
"rpcMethod": "vault/scripts/run/stop",
"localExecution": false,
"description": "Stop a running automation script by runId.",
"inputShape": {
"runId": {
"type": "string",
"optional": false,
"description": "Script run ID from scripts_run or scripts_runs_list."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.scripts.run.pause",
"toolName": "scripts_run_pause",
"rpcMethod": "vault/scripts/run/pause",
"localExecution": false,
"description": "Pause a running automation script by runId.",
"inputShape": {
"runId": {
"type": "string",
"optional": false,
"description": "Script run ID to pause."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.scripts.run.resume",
"toolName": "scripts_run_resume",
"rpcMethod": "vault/scripts/run/resume",
"localExecution": false,
"description": "Resume a paused automation script by runId.",
"inputShape": {
"runId": {
"type": "string",
"optional": false,
"description": "Script run ID to resume."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.scripts.targets.set",
"toolName": "scripts_targets_set",
"rpcMethod": "vault/scripts/targets/set",
"localExecution": false,
"description": "Set host IDs, dynamic group paths, or targetsAllHosts for an automation script. onConnect host IDs sync host connect queues.",
"inputShape": {
"scriptId": {
"type": "string",
"optional": false,
"description": "Script ID."
},
"targets": {
"type": "string",
"optional": true,
"description": "JSON array of vault host IDs (omit when targetsAllHosts=true)."
},
"targetGroups": {
"type": "string",
"optional": true,
"description": "JSON array of dynamic vault group paths (omit when targetsAllHosts=true)."
},
"targetsAllHosts": {
"type": "string",
"optional": true,
"description": "Set true to target all connectable hosts."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "vault.host.connectScripts.list",
"toolName": "host_connect_scripts_list",
"rpcMethod": "vault/host/connectScripts/list",
"localExecution": false,
"description": "List resolved onConnect automation scripts for a host (global, dynamic group, then host queue).",
"inputShape": {
"hostId": {
"type": "string",
"optional": false,
"description": "Vault host ID."
}
},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "vault.host.connectScripts.set",
"toolName": "host_connect_scripts_set",
"rpcMethod": "vault/host/connectScripts/set",
"localExecution": false,
"description": "Set ordered onConnect script IDs for a host (host-specific queue; globals run separately). Sets per-host onConnect script queue order. Global and matching dynamic-group scripts run first automatically.",
"inputShape": {
"hostId": {
"type": "string",
"optional": false,
"description": "Vault host ID."
},
"scriptIds": {
"type": "string",
"optional": false,
"description": "JSON array of onConnect script IDs in run order."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "portforward.rules.list",
"toolName": "portforward_rules_list",
"rpcMethod": "portforward/rules/list",
"localExecution": false,
"description": "List persisted port forwarding rules.",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "portforward.tunnels.list",
"toolName": "portforward_tunnels_list",
"rpcMethod": "portforward/tunnels/list",
"localExecution": false,
"description": "List active port forwarding tunnels.",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "portforward.rules.create",
"toolName": "portforward_rules_create",
"rpcMethod": "portforward/rules/create",
"localExecution": false,
"description": "Create a persisted port forwarding rule.",
"inputShape": {
"label": {
"type": "string",
"optional": true,
"description": "Rule label."
},
"type": {
"type": "string",
"optional": false,
"description": "local, remote, or dynamic."
},
"localPort": {
"type": "number",
"optional": false,
"description": "Local listening port (1-65535)."
},
"bindAddress": {
"type": "string",
"optional": true,
"description": "Bind address; default 127.0.0.1."
},
"remoteHost": {
"type": "string",
"optional": true,
"description": "Required except for dynamic forwarding."
},
"remotePort": {
"type": "number",
"optional": true,
"description": "Required except for dynamic forwarding."
},
"hostId": {
"type": "string",
"optional": false,
"description": "Vault host ID used for the tunnel."
},
"autoStart": {
"type": "string",
"optional": true,
"description": "true or false."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "portforward.rules.update",
"toolName": "portforward_rules_update",
"rpcMethod": "portforward/rules/update",
"localExecution": false,
"description": "Update a persisted port forwarding rule.",
"inputShape": {
"ruleId": {
"type": "string",
"optional": false,
"description": "Port forwarding rule ID."
},
"label": {
"type": "string",
"optional": true,
"description": "New rule label."
},
"type": {
"type": "string",
"optional": true,
"description": "local, remote, or dynamic."
},
"localPort": {
"type": "number",
"optional": true,
"description": "Local listening port."
},
"bindAddress": {
"type": "string",
"optional": true,
"description": "Bind address."
},
"remoteHost": {
"type": "string",
"optional": true,
"description": "Remote host."
},
"remotePort": {
"type": "number",
"optional": true,
"description": "Remote port."
},
"hostId": {
"type": "string",
"optional": true,
"description": "Vault host ID used for the tunnel."
},
"autoStart": {
"type": "string",
"optional": true,
"description": "true or false."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "portforward.rules.duplicate",
"toolName": "portforward_rules_duplicate",
"rpcMethod": "portforward/rules/duplicate",
"localExecution": false,
"description": "Duplicate a persisted port forwarding rule.",
"inputShape": {
"ruleId": {
"type": "string",
"optional": false,
"description": "Port forwarding rule ID to copy."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "portforward.rules.delete",
"toolName": "portforward_rules_delete",
"rpcMethod": "portforward/rules/delete",
"localExecution": false,
"description": "Delete a persisted port forwarding rule.",
"inputShape": {
"ruleId": {
"type": "string",
"optional": false,
"description": "Port forwarding rule ID to delete."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "portforward.start",
"toolName": "portforward_start",
"rpcMethod": "portforward/start",
"localExecution": false,
"description": "Start a port forwarding tunnel for a rule.",
"inputShape": {
"ruleId": {
"type": "string",
"optional": false,
"description": "Port forwarding rule ID."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "portforward.stop",
"toolName": "portforward_stop",
"rpcMethod": "portforward/stop",
"localExecution": false,
"description": "Stop an active port forwarding tunnel.",
"inputShape": {
"ruleId": {
"type": "string",
"optional": false,
"description": "Port forwarding rule ID."
}
},
"policy": {
"write": true,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": false,
"bypassesObserverBlock": false,
"bypassesApproval": false,
"bypassesChatCancel": false
}
},
{
"capabilityId": "harness.tool_output.read",
"toolName": "tool_output_read",
"rpcMethod": null,
"localExecution": true,
"description": "Read stored tool output by handle id when a prior tool result was truncated.",
"inputShape": {
"handleId": {
"type": "string",
"optional": false,
"description": "Tool output handle id from a prior truncated result."
},
"mode": {
"type": "string",
"optional": true,
"description": "Which portion to read: head, tail, range, search, or bounded full."
},
"maxChars": {
"type": "number",
"optional": true,
"description": "Requested characters to return. The service enforces a hard upper bound."
},
"offset": {
"type": "number",
"optional": true,
"description": "Zero-based character offset for range reads or search continuation."
},
"query": {
"type": "string",
"optional": true,
"description": "Case-insensitive search text when mode is search."
}
},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "harness.workspace.get_info",
"toolName": "workspace_get_info",
"rpcMethod": null,
"localExecution": true,
"description": "Get information about the current workspace, including all terminal sessions and their connection status.",
"inputShape": {},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "harness.workspace.get_session_info",
"toolName": "workspace_get_session_info",
"rpcMethod": null,
"localExecution": true,
"description": "Get detailed information about a specific terminal or SFTP session.",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "The session ID to get information about."
}
},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "harness.terminal.read_context",
"toolName": "terminal_read_context",
"rpcMethod": null,
"localExecution": true,
"description": "Read a bounded slice of the current terminal screen or scrollback from the active AI scope.",
"inputShape": {
"sessionId": {
"type": "string",
"optional": true,
"description": "Terminal session ID. Required when the current AI scope contains more than one terminal."
},
"range": {
"type": "string",
"optional": true,
"description": "Which terminal slice to read: viewport, tail, head, or lines. Defaults to viewport."
},
"startLine": {
"type": "number",
"optional": true,
"description": "Zero-based terminal buffer line to start from when range is lines."
},
"maxLines": {
"type": "number",
"optional": true,
"description": "Maximum terminal rows to return. Defaults to 80, capped at 300."
}
},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "harness.web.search",
"toolName": "web_search",
"rpcMethod": null,
"localExecution": true,
"description": "Search the web for current information when configured in AI settings.",
"inputShape": {
"query": {
"type": "string",
"optional": false,
"description": "The search query to look up on the web."
},
"maxResults": {
"type": "number",
"optional": true,
"description": "Maximum number of search results to return."
}
},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "harness.url.fetch",
"toolName": "url_fetch",
"rpcMethod": null,
"localExecution": true,
"description": "Fetch and read the content of an HTTPS URL.",
"inputShape": {
"url": {
"type": "string",
"optional": false,
"description": "The HTTPS URL to fetch."
},
"maxLength": {
"type": "number",
"optional": true,
"description": "Maximum characters to return (default 50000)."
}
},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": false,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
},
{
"capabilityId": "harness.skill.run",
"toolName": "skill_run",
"rpcMethod": null,
"localExecution": true,
"description": "Run a built-in diagnostic skill that executes a pre-crafted sequence of shell commands on a target session and returns a structured report. Prefer this over hand-rolling terminal_execute chains for host diagnostics. Built-in skills: diagnose_linux (OS/CPU/memory/disk/ports/Docker/systemd/kernel errors), diagnose_windows (OS/CPU/memory/disk/top procs/services/ports/event log via PowerShell), check_ports (all listening TCP/UDP with process info), check_docker (daemon health, containers, disk usage, images), security_audit (Linux SSH/firewall/failed logins/world-writable files). The skill auto-picks the right shell commands for the session's OS/shellType.",
"inputShape": {
"sessionId": {
"type": "string",
"optional": false,
"description": "Target terminal session ID."
},
"skillName": {
"type": "string",
"optional": false,
"description": "Built-in skill name: diagnose_linux, diagnose_windows, check_ports, check_docker, security_audit."
}
},
"policy": {
"write": false,
"sensitiveRead": false,
"longRunning": true,
"requiresChatSession": true,
"bypassesObserverBlock": false,
"bypassesApproval": true,
"bypassesChatCancel": true
}
}
]