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
2254 lines
68 KiB
JSON
2254 lines
68 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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"capabilityId": "vault.host.open",
|
|
"toolName": "host_open",
|
|
"rpcMethod": "vault/hosts/open",
|
|
"localExecution": false,
|
|
"description": "Open a vault host by creating a new terminal tab and starting the connection. Returns the new sessionId so you can run terminal/SFTP tools against it. Use vault_hosts_list first when you only know the label or hostname. Opens a terminal tab for a saved vault host (same as clicking the host in Netcatty). Connection may still be establishing when the tool returns — use get_environment or wait briefly before terminal_execute if needed. Call session_close with the returned sessionId when the task is finished. Auth prompts (passphrase / keyboard-interactive) still require the user in the Netcatty UI.",
|
|
"inputShape": {
|
|
"hostId": {
|
|
"type": "string",
|
|
"optional": false,
|
|
"description": "Vault host ID to open. Use vault_hosts_list / host_get to resolve id from label or hostname."
|
|
}
|
|
},
|
|
"policy": {
|
|
"write": true,
|
|
"sensitiveRead": false,
|
|
"longRunning": false,
|
|
"requiresChatSession": false,
|
|
"bypassesObserverBlock": false,
|
|
"bypassesApproval": false,
|
|
"bypassesChatCancel": false
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
"agentKind": "global"
|
|
}
|
|
]
|