Server setup and SSH
Attach a machine, configure Smart Lifecycle and manage SSH public keys.
Attach a machine, configure Smart Lifecycle and manage SSH public keys.
These are action names. In default compact mode, call the indicated group tool with {"action":"<action-name>","params":{...}}; the arguments below go inside params. In ?mode=all, call the action name directly with those arguments. browse_github and read_docs are direct tools in both modes. Expand each schema for nested fields, enum values and validation constraints. Successful results are JSON in both text content and structuredContent; failures use isError and structuredContent.error.
The public BYOD action registers through Kinesis Remote Reach; its response retains the wire field needVpn. It accepts token expiry and renewal options, not connection-mode or SSH-management options. Portal onboarding offers a separate network guide. Install SSH keys only on the eligibleServers returned by list_ssh_keys; Remote Reach machines and rented marketplace machines are ineligible.
get_byod_token
Get a provision token and install command for attaching a machine. The one-line command attaches it (bring your own device) as one of the organization's servers. The same usable token comes back on repeated calls until it is consumed or expires; forceNew mints a fresh one.
Group: servers · Behavior: Write
Compact tool: servers_write · Action: get_byod_token
MCP annotations: readOnlyHint: false · destructiveHint: true · idempotentHint: false · openWorldHint: false
Permissions and REST equivalents
servers.byodToken
POST /servers/byod-token
pools:write
Arguments
expiresInSec
integer
No
Lifetime of a newly minted token, 3600 by default
forceNew
boolean
No
Mint a new token even when a usable one exists
org
string
No
Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one
Result
token(string): Provision token; single useexpiresAt(string or null): See the complete response schema below.needVpn(boolean): The machine joins through Kinesis Remote Reach (VPN-backed)expiresInSec(integer): See the complete response schema below.installCommand(string): Run this on the machine as root; it installs the agent and registers it
Operation-specific errors: 400 org_required, 403 key_project_restricted.
list_smart_lifecycle
The Smart Lifecycle setting of each server the organization owns. On, the platform hibernates it when nothing runs on it (storage billing only) and wakes it when an app needs it
Group: servers · Behavior: Read
Compact tool: servers · Action: list_smart_lifecycle
MCP annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false
Permissions and REST equivalents
servers.smartLifecycle.list
GET /servers/smart-lifecycle
pools:read
Arguments
org
string
No
Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one
Result
servers(array<object>): One entry per server the organization owns
Operation-specific errors: 400 org_required, 403 key_project_restricted.
set_smart_lifecycle
Turn automatic hibernate and wake-up (Smart Lifecycle) on or off. For the org's servers
Group: servers · Behavior: Write
Compact tool: servers_write · Action: set_smart_lifecycle
MCP annotations: readOnlyHint: false · destructiveHint: true · idempotentHint: true · openWorldHint: false
Permissions and REST equivalents
servers.smartLifecycle.update
PATCH /servers/smart-lifecycle
pools:write
Arguments
addresses
array<string>
Yes
Server addresses, at most 50
enabled
boolean
Yes
On or off
org
string
No
Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one
Result
servers(array<object>): One entry per server the organization owns
Operation-specific errors: 400 org_required, 403 key_project_restricted.
list_ssh_keys
The organization's SSH public keys and where each is installed (admins). Also its servers a key can be installed on (those added without Kinesis Remote Reach)
Group: servers · Behavior: Read
Compact tool: servers · Action: list_ssh_keys
MCP annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false
Permissions and REST equivalents
sshKeys.list
GET /ssh-keys
pools:read
Arguments
org
string
No
Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one
Result
keys(array<object>): See the complete response schema below.eligibleServers(array<object>): Servers a key can be assigned to
Operation-specific errors: 400 org_required, 403 key_project_restricted.
add_ssh_key
Register an SSH public key under a label. OpenSSH format; assign it to servers afterwards
Group: servers · Behavior: Write
Compact tool: servers_write · Action: add_ssh_key
MCP annotations: readOnlyHint: false · destructiveHint: false · idempotentHint: false · openWorldHint: false
Permissions and REST equivalents
sshKeys.create
POST /ssh-keys
pools:write
Arguments
label
string
Yes
A name for the key
publicKey
string
Yes
The public key, e.g. the contents of id_ed25519.pub
org
string
No
Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one
Result
id(string): Key idlabel(string): See the complete response schema below.fingerprint(string): See the complete response schema below.servers(array<string>): Addresses of the servers the key is installed oncreatedAt(string or null): See the complete response schema below.
Operation-specific errors: 400 org_required, 403 key_project_restricted.
remove_ssh_key
Delete an SSH key; it is removed from every server it was installed on
Group: servers · Behavior: Write
Compact tool: servers_write · Action: remove_ssh_key
MCP annotations: readOnlyHint: false · destructiveHint: true · idempotentHint: false · openWorldHint: false
Permissions and REST equivalents
sshKeys.delete
DELETE /ssh-keys/{keyId}
pools:write
Arguments
keyId
string
Yes
Key id from the list
org
string
No
Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one
Result
deleted(true): See the complete response schema below.
Operation-specific errors: 400 org_required, 403 key_project_restricted.
assign_ssh_key
Install an organization SSH key on eligible servers, or remove it (admins). action=assign installs it (on the servers list_ssh_keys names under eligibleServers); action=unassign removes it from them. ssh @ then works with the matching private key.
Group: servers · Behavior: Write
Compact tool: servers_write · Action: assign_ssh_key
MCP annotations: readOnlyHint: false · destructiveHint: true · idempotentHint: true · openWorldHint: false
Permissions and REST equivalents
sshKeys.assign
POST /ssh-keys/{keyId}/servers
pools:write
sshKeys.unassign
DELETE /ssh-keys/{keyId}/servers
pools:write
Arguments
action
"assign" / "unassign"
Yes
Install or remove
keyId
string
Yes
Key id from the list
addresses
array<string>
Yes
Server addresses, at most 50
org
string
No
Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one
Result
sshKeys.assign
id(string): Key idlabel(string): See the complete response schema below.fingerprint(string): See the complete response schema below.servers(array<string>): Addresses of the servers the key is installed oncreatedAt(string or null): See the complete response schema below.
Operation-specific errors: 400 org_required, 403 key_project_restricted. sshKeys.unassign
id(string): Key idlabel(string): See the complete response schema below.fingerprint(string): See the complete response schema below.servers(array<string>): Addresses of the servers the key is installed oncreatedAt(string or null): See the complete response schema below.
Operation-specific errors: 400 org_required, 403 key_project_restricted.
Was this helpful?
