From 34a2e009c4746c2ccabaf02219b9d9d9091a2dc3 Mon Sep 17 00:00:00 2001 From: Prophet731 Date: Mon, 16 Mar 2026 00:33:55 -0400 Subject: [PATCH] Add "Tool-Reference" --- Tool-Reference.-.md | 1099 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1099 insertions(+) create mode 100644 Tool-Reference.-.md diff --git a/Tool-Reference.-.md b/Tool-Reference.-.md new file mode 100644 index 0000000..1e48891 --- /dev/null +++ b/Tool-Reference.-.md @@ -0,0 +1,1099 @@ +# Tool Reference + +Complete reference for all 84 tools provided by the VirtFusion MCP server, organized by module. Each tool maps directly to a VirtFusion Admin API endpoint. + +## Table of Contents + +- [General (1 tool)](#general-1-tool) +- [Servers (18 tools)](#servers-18-tools) +- [Servers -- Power (4 tools)](#servers--power-4-tools) +- [Servers -- Network (5 tools)](#servers--network-5-tools) +- [Servers -- Firewall (4 tools)](#servers--firewall-4-tools) +- [Servers -- Traffic (4 tools)](#servers--traffic-4-tools) +- [Hypervisors (2 tools)](#hypervisors-2-tools) +- [Hypervisor Groups (3 tools)](#hypervisor-groups-3-tools) +- [IP Blocks (3 tools)](#ip-blocks-3-tools) +- [Packages (2 tools)](#packages-2-tools) +- [Queue (1 tool)](#queue-1-tool) +- [Backups (1 tool)](#backups-1-tool) +- [DNS (1 tool)](#dns-1-tool) +- [Media (2 tools)](#media-2-tools) +- [SSH Keys (4 tools)](#ssh-keys-4-tools) +- [Users (7 tools)](#users-7-tools) +- [Self Service (19 tools)](#self-service-19-tools) + +--- + +## General (1 tool) + +Module: `src/tools/general.ts` + +### `general_test_connection` + +Test the API connection to VirtFusion. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| _(none)_ | | | | + +**Endpoint:** `GET /connect` + +--- + +## Servers (18 tools) + +Module: `src/tools/servers.ts` + +### `servers_list` + +List all servers with optional filtering. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `type` | string | optional | Filter by server type | +| `results` | number | optional | Number of results to return | +| `hypervisorId` | number | optional | Filter by hypervisor ID | + +**Endpoint:** `GET /servers` + +### `servers_create` + +Create a new server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `packageId` | number | **required** | Package ID for the server | +| `userId` | number | **required** | User ID who will own the server | +| `hypervisorId` | number | **required** | Hypervisor ID to deploy on | +| `dryRun` | boolean | optional | Perform a dry run without creating the server | +| `ipv4` | number | optional | Number of IPv4 addresses | +| `storage` | number | optional | Storage in GB | +| `traffic` | number | optional | Traffic allowance | +| `memory` | number | optional | Memory in MB | +| `cpuCores` | number | optional | Number of CPU cores | +| `networkSpeedInbound` | number | optional | Inbound network speed | +| `networkSpeedOutbound` | number | optional | Outbound network speed | +| `storageProfile` | number | optional | Storage profile ID | +| `networkProfile` | number | optional | Network profile ID | +| `firewallRulesets` | number[] | optional | Firewall ruleset IDs | +| `hypervisorAssetGroups` | number[] | optional | Hypervisor asset group IDs | +| `additionalStorage1Enable` | boolean | optional | Enable additional storage 1 | +| `additionalStorage2Enable` | boolean | optional | Enable additional storage 2 | +| `additionalStorage1Profile` | number | optional | Storage profile for additional storage 1 | +| `additionalStorage2Profile` | number | optional | Storage profile for additional storage 2 | +| `additionalStorage1Capacity` | number | optional | Capacity for additional storage 1 | +| `additionalStorage2Capacity` | number | optional | Capacity for additional storage 2 | + +**Endpoint:** `POST /servers` + +### `servers_get` + +Retrieve details of a specific server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `remoteState` | boolean | optional | Include remote state information | + +**Endpoint:** `GET /servers/{serverId}` + +### `servers_delete` + +Delete a server. A minimum 5-minute (300s) delay is enforced as a safety margin. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `delay` | number | optional | Delay in seconds before deletion (minimum 300) | + +**Endpoint:** `DELETE /servers/{serverId}` + +### `servers_build` + +Build/rebuild a server with an OS template. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `operatingSystemId` | number | **required** | Operating system template ID | +| `name` | string | optional | Server name | +| `hostname` | string | optional | Server hostname | +| `sshKeys` | number[] | optional | SSH key IDs to add | +| `vnc` | boolean | optional | Enable VNC | +| `ipv6` | boolean | optional | Enable IPv6 | +| `email` | boolean | optional | Send email notification | +| `swap` | number | optional | Swap size in MB | + +**Endpoint:** `POST /servers/{serverId}/build` + +### `servers_list_templates` + +List OS templates available for a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | + +**Endpoint:** `GET /servers/{serverId}/templates` + +### `servers_modify_name` + +Change a server's display name. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `name` | string | **required** | New display name for the server | + +**Endpoint:** `PUT /servers/{serverId}/modify/name` + +### `servers_modify_cpu` + +Modify the number of CPU cores for a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `cpuCores` | number | **required** | Number of CPU cores | + +**Endpoint:** `PUT /servers/{serverId}/modify/cpuCores` + +### `servers_modify_memory` + +Modify the memory allocation for a server in MB. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `memory` | number | **required** | Memory in MB | + +**Endpoint:** `PUT /servers/{serverId}/modify/memory` + +### `servers_throttle_cpu` + +Throttle a server's CPU. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `cpuThrottle` | number | **required** | CPU throttle percentage (0-99). 0 removes throttle. | + +**Endpoint:** `PUT /servers/{serverId}/modify/cpuThrottle` + +> Note: The tool accepts `cpuThrottle` as the parameter name but sends it as `percent` in the request body to match the VirtFusion API spec. + +### `servers_get_traffic` + +Retrieve traffic statistics for a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | + +**Endpoint:** `GET /servers/{serverId}/traffic` + +### `servers_suspend` + +Suspend a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | + +**Endpoint:** `POST /servers/{serverId}/suspend` + +### `servers_unsuspend` + +Unsuspend a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | + +**Endpoint:** `POST /servers/{serverId}/unsuspend` + +### `servers_reset_password` + +Reset a server's root/admin password. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `user` | enum: `root`, `Administrator` | **required** | User to reset password for | +| `sendMail` | boolean | optional | Send password via email | + +**Endpoint:** `POST /servers/{serverId}/resetPassword` + +### `servers_enable_vnc` + +Enable or disable VNC for a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `vnc` | boolean | **required** | Enable or disable VNC | + +**Endpoint:** `POST /servers/{serverId}/vnc` + +### `servers_get_vnc` + +Retrieve VNC connection details for a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | + +**Endpoint:** `GET /servers/{serverId}/vnc` + +### `servers_set_custom_xml` + +Set custom XML configuration for a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `xml` | string | **required** | Custom XML configuration | + +**Endpoint:** `POST /servers/{serverId}/customXML` + +### `servers_change_owner` + +Change the owner of a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `newOwnerId` | number | **required** | New owner user ID | + +**Endpoint:** `PUT /servers/{serverId}/owner/{newOwnerId}` + +### `servers_change_package` + +Change a server's package with optional resource sync flags. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `packageId` | number | **required** | New package ID | +| `backupPlan` | boolean | optional | Sync backup plan | +| `cpu` | boolean | optional | Sync CPU | +| `memory` | boolean | optional | Sync memory | +| `primaryDiskReadIOPS` | boolean | optional | Sync primary disk read IOPS | +| `primaryDiskReadThroughput` | boolean | optional | Sync primary disk read throughput | +| `primaryDiskSize` | boolean | optional | Sync primary disk size | +| `primaryDiskWriteIOPS` | boolean | optional | Sync primary disk write IOPS | +| `primaryDiskWriteThroughput` | boolean | optional | Sync primary disk write throughput | +| `primaryNetworkInboundSpeed` | boolean | optional | Sync primary network inbound speed | +| `primaryNetworkOutboundSpeed` | boolean | optional | Sync primary network outbound speed | +| `primaryNetworkTraffic` | boolean | optional | Sync primary network traffic | + +**Endpoint:** `PUT /servers/{serverId}/package/{packageId}` + +### `servers_set_backup_plan` + +Add, remove or modify a server's backup plan. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `planId` | number | **required** | Backup plan ID (0 to remove) | + +**Endpoint:** `PUT /servers/{serverId}/backups/plan/{planId}` + +### `servers_list_by_user` + +List all servers owned by a specific user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `userId` | number | **required** | The user ID | + +**Endpoint:** `GET /servers/user/{userId}` + +--- + +## Servers -- Power (4 tools) + +Module: `src/tools/servers-power.ts` + +### `servers_power_boot` + +Boot a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | + +**Endpoint:** `POST /servers/{serverId}/power/boot` + +### `servers_power_shutdown` + +Gracefully shutdown a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | + +**Endpoint:** `POST /servers/{serverId}/power/shutdown` + +### `servers_power_restart` + +Restart a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | + +**Endpoint:** `POST /servers/{serverId}/power/restart` + +### `servers_power_poweroff` + +Force power off a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | + +**Endpoint:** `POST /servers/{serverId}/power/poweroff` + +--- + +## Servers -- Network (5 tools) + +Module: `src/tools/servers-network.ts` + +### `servers_network_whitelist_add` + +Add an IP address to a server's network whitelist. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `interface` | enum: `primary`, `secondary` | **required** | Network interface | +| `ip` | string | **required** | IP address to whitelist | +| `cidr` | number | **required** | CIDR notation prefix length | + +**Endpoint:** `POST /servers/{serverId}/networkWhitelist` + +### `servers_network_whitelist_remove` + +Remove an IP from a server's network whitelist. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `interface` | string | **required** | Network interface | +| `ip` | string | **required** | IP address to remove | + +**Endpoint:** `DELETE /servers/{serverId}/networkWhitelist` + +### `servers_network_ipv4_add` + +Add specific IPv4 addresses to a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `ip` | string[] | **required** | Array of IPv4 addresses to add | + +**Endpoint:** `POST /servers/{serverId}/ipv4` + +### `servers_network_ipv4_remove` + +Remove IPv4 addresses from a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `ip` | string[] | **required** | Array of IPv4 addresses to remove | + +**Endpoint:** `DELETE /servers/{serverId}/ipv4` + +### `servers_network_ipv4_add_qty` + +Add a quantity of IPv4 addresses to a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `interface` | string | **required** | Network interface | +| `quantity` | number | **required** | Number of IPv4 addresses to add | + +**Endpoint:** `POST /servers/{serverId}/ipv4Qty` + +--- + +## Servers -- Firewall (4 tools) + +Module: `src/tools/servers-firewall.ts` + +### `servers_firewall_get` + +Retrieve firewall configuration for a server interface. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `interface` | enum: `primary`, `secondary` | **required** | Network interface | +| `sync` | boolean | optional | Sync firewall state from hypervisor | + +**Endpoint:** `GET /servers/{serverId}/firewall/{interface}` + +### `servers_firewall_enable` + +Enable the firewall on a server interface. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `interface` | enum: `primary`, `secondary` | **required** | Network interface | +| `sync` | boolean | optional | Sync firewall state from hypervisor | + +**Endpoint:** `POST /servers/{serverId}/firewall/{interface}/enable` + +### `servers_firewall_disable` + +Disable the firewall on a server interface. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `interface` | enum: `primary`, `secondary` | **required** | Network interface | +| `sync` | boolean | optional | Sync firewall state from hypervisor | + +**Endpoint:** `POST /servers/{serverId}/firewall/{interface}/disable` + +### `servers_firewall_set_rules` + +Apply firewall rulesets to a server interface. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `interface` | enum: `primary`, `secondary` | **required** | Network interface | +| `rulesets` | number[] | **required** | Firewall ruleset IDs (empty array to flush all rules) | +| `sync` | boolean | optional | Sync firewall state from hypervisor | + +**Endpoint:** `POST /servers/{serverId}/firewall/{interface}/rules` + +--- + +## Servers -- Traffic (4 tools) + +Module: `src/tools/servers-traffic.ts` + +### `servers_traffic_list_blocks` + +List traffic blocks for a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | + +**Endpoint:** `GET /servers/{serverId}/traffic/blocks` + +### `servers_traffic_add_block` + +Add a traffic block to a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `month` | number | **required** | Month number for the traffic block | +| `amount` | number | **required** | Traffic amount in GB | + +**Endpoint:** `POST /servers/{serverId}/traffic/blocks` + +### `servers_traffic_remove_block` + +Remove a traffic block from a server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `blockId` | number | **required** | The traffic block ID | + +**Endpoint:** `DELETE /servers/{serverId}/traffic/blocks/{blockId}` + +### `servers_traffic_modify` + +Modify a server's primary traffic allowance. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | +| `traffic` | string | **required** | Traffic allowance (0-999999999) | + +**Endpoint:** `PUT /servers/{serverId}/modify/traffic` + +--- + +## Hypervisors (2 tools) + +Module: `src/tools/hypervisors.ts` + +### `hypervisors_list` + +List all hypervisors. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `results` | number | optional | Number of results to return | + +**Endpoint:** `GET /compute/hypervisors` + +### `hypervisors_get` + +Retrieve details of a specific hypervisor. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `hypervisorId` | number | **required** | The hypervisor ID | + +**Endpoint:** `GET /compute/hypervisors/{hypervisorId}` + +--- + +## Hypervisor Groups (3 tools) + +Module: `src/tools/hypervisor-groups.ts` + +### `hypervisor_groups_list` + +List all hypervisor groups. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `results` | number | optional | Number of results to return | + +**Endpoint:** `GET /compute/hypervisors/groups` + +### `hypervisor_groups_get` + +Retrieve details of a specific hypervisor group. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `hypervisorGroupId` | number | **required** | The hypervisor group ID | + +**Endpoint:** `GET /compute/hypervisors/groups/{hypervisorGroupId}` + +### `hypervisor_groups_get_resources` + +Retrieve resources for a hypervisor group. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `hypervisorGroupId` | number | **required** | The hypervisor group ID | + +**Endpoint:** `GET /compute/hypervisors/groups/{hypervisorGroupId}/resources` + +--- + +## IP Blocks (3 tools) + +Module: `src/tools/ip-blocks.ts` + +### `ip_blocks_list` + +List all IP blocks. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `results` | number | optional | Number of results to return | + +**Endpoint:** `GET /connectivity/ipblocks` + +### `ip_blocks_get` + +Retrieve details of a specific IP block. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `blockId` | number | **required** | The IP block ID | + +**Endpoint:** `GET /connectivity/ipblocks/{blockId}` + +### `ip_blocks_add_ipv4_range` + +Add an IPv4 range to an IP block. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `blockId` | number | **required** | The IP block ID | +| `type` | string | **required** | Type of IP range (always "range") | +| `start` | string | **required** | Start IPv4 address | +| `end` | string | **required** | End IPv4 address | + +**Endpoint:** `POST /connectivity/ipblocks/{blockId}/ipv4` + +--- + +## Packages (2 tools) + +Module: `src/tools/packages.ts` + +### `packages_list` + +List all available packages. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| _(none)_ | | | | + +**Endpoint:** `GET /packages` + +### `packages_get` + +Retrieve details of a specific package. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `packageId` | number | **required** | The package ID | + +**Endpoint:** `GET /packages/{packageId}` + +--- + +## Queue (1 tool) + +Module: `src/tools/queue.ts` + +### `queue_get` + +Retrieve the status of a queue item. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `queueId` | number | **required** | The queue item ID | + +**Endpoint:** `GET /queue/{queueId}` + +--- + +## Backups (1 tool) + +Module: `src/tools/backups.ts` + +### `backups_list_by_server` + +List all backups for a specific server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverId` | number | **required** | The server ID | + +**Endpoint:** `GET /backups/server/{serverId}` + +--- + +## DNS (1 tool) + +Module: `src/tools/dns.ts` + +### `dns_get_service` + +Retrieve a DNS service. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serviceId` | number | **required** | The DNS service ID | + +**Endpoint:** `GET /dns/services/{serviceId}` + +--- + +## Media (2 tools) + +Module: `src/tools/media.ts` + +### `media_get_iso` + +Retrieve details of a specific ISO image. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `isoId` | number | **required** | The ISO image ID | + +**Endpoint:** `GET /media/iso/{isoId}` + +### `media_get_templates_by_package` + +List OS templates available for a specific package. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `serverPackageId` | number | **required** | The server package ID | + +**Endpoint:** `GET /media/templates/fromServerPackageSpec/{serverPackageId}` + +--- + +## SSH Keys (4 tools) + +Module: `src/tools/ssh-keys.ts` + +### `ssh_keys_create` + +Add an SSH key to a user account. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `userId` | number | **required** | The user ID | +| `name` | string | **required** | Name for the SSH key | +| `publicKey` | string | **required** | The public key content | + +**Endpoint:** `POST /ssh_keys` + +### `ssh_keys_get` + +Retrieve details of a specific SSH key. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `keyId` | number | **required** | The SSH key ID | + +**Endpoint:** `GET /ssh_keys/{keyId}` + +### `ssh_keys_delete` + +Delete an SSH key. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `keyId` | number | **required** | The SSH key ID | + +**Endpoint:** `DELETE /ssh_keys/{keyId}` + +### `ssh_keys_list_by_user` + +List all SSH keys for a specific user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `userId` | number | **required** | The user ID | + +**Endpoint:** `GET /ssh_keys/user/{userId}` + +--- + +## Users (7 tools) + +Module: `src/tools/users.ts` + +### `users_create` + +Create a new user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `name` | string | **required** | User display name | +| `email` | string | **required** | User email address | +| `extRelationId` | number | optional | External relation ID | +| `relStr` | string | optional | Relation string | +| `selfService` | number | optional | Self-service level (0-3) | +| `selfServiceHourlyCredit` | boolean | optional | Enable hourly credit for self-service | +| `selfServiceHourlyGroupProfiles` | number[] | optional | Hourly group profile IDs | +| `selfServiceResourceGroupProfiles` | number[] | optional | Resource group profile IDs | +| `selfServiceHourlyResourcePack` | number | optional | Hourly resource pack ID | +| `sendMail` | boolean | optional | Send welcome email | + +**Endpoint:** `POST /users` + +### `users_get` + +Retrieve a user by external relation ID. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | + +**Endpoint:** `GET /users/{extRelationId}/byExtRelation` + +### `users_modify` + +Modify a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | +| `name` | string | optional | User display name | +| `email` | string | optional | User email address | +| `selfService` | number | optional | Self-service level (0-3) | +| `selfServiceHourlyCredit` | boolean | optional | Enable hourly credit for self-service | +| `selfServiceHourlyGroupProfiles` | number[] | optional | Hourly group profile IDs | +| `selfServiceResourceGroupProfiles` | number[] | optional | Resource group profile IDs | +| `selfServiceHourlyResourcePack` | number | optional | Hourly resource pack ID | +| `enabled` | boolean | optional | Enable or disable the user | + +**Endpoint:** `PUT /users/{extRelationId}/byExtRelation` + +### `users_delete` + +Delete a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | + +**Endpoint:** `DELETE /users/{extRelationId}/byExtRelation` + +### `users_reset_password` + +Reset a user's password. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | + +**Endpoint:** `POST /users/{extRelationId}/byExtRelation/resetPassword` + +### `users_generate_auth_tokens` + +Generate login tokens for a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | + +**Endpoint:** `POST /users/{extRelationId}/authenticationTokens` + +### `users_generate_server_auth_tokens` + +Generate login tokens for a user scoped to a specific server. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `serverId` | number | **required** | The server ID to scope the token to | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | + +**Endpoint:** `POST /users/{extRelationId}/serverAuthenticationTokens/{serverId}` + +--- + +## Self Service (19 tools) + +Module: `src/tools/self-service.ts` + +### `self_service_add_credit` + +Add credit to a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `tokens` | number | **required** | Number of credit tokens to add | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | +| `reference_1` | number | optional | Optional numeric reference | +| `reference_2` | string | optional | Optional string reference | + +**Endpoint:** `POST /selfService/credit/byUserExtRelationId/{extRelationId}` + +### `self_service_cancel_credit` + +Cancel credit that was applied to a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `creditId` | number | **required** | The credit ID to cancel | + +**Endpoint:** `DELETE /selfService/credit/{creditId}` + +### `self_service_get_currencies` + +Retrieve available currencies. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| _(none)_ | | | | + +**Endpoint:** `GET /selfService/currencies` + +### `self_service_add_hourly_group_profile` + +Add an hourly group profile to a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `profileId` | number | **required** | The hourly group profile ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | + +**Endpoint:** `POST /selfService/hourlyGroupProfile/byUserExtRelationId/{extRelationId}` + +### `self_service_remove_hourly_group_profile` + +Remove an hourly group profile from a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `profileId` | number | **required** | The hourly group profile ID | +| `extRelationId` | string | **required** | External relation ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | + +**Endpoint:** `DELETE /selfService/hourlyGroupProfile/{profileId}/byUserExtRelationId/{extRelationId}` + +### `self_service_add_resource_group_profile` + +Add a resource group profile to a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `profileId` | number | **required** | The resource group profile ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | + +**Endpoint:** `POST /selfService/resourceGroupProfile/byUserExtRelationId/{extRelationId}` + +### `self_service_remove_resource_group_profile` + +Remove a resource group profile from a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `profileId` | number | **required** | The resource group profile ID | +| `extRelationId` | string | **required** | External relation ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | + +**Endpoint:** `DELETE /selfService/resourceGroupProfile/{profileId}/byUserExtRelationId/{extRelationId}` + +### `self_service_add_resource_pack` + +Add a resource pack to a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `packId` | number | **required** | The resource pack ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | +| `enabled` | boolean | optional | Whether the resource pack is enabled | + +**Endpoint:** `POST /selfService/resourcePack/byUserExtRelationId/{extRelationId}` + +### `self_service_get_resource_pack` + +Retrieve a user resource pack. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `packId` | number | **required** | The resource pack ID | + +**Endpoint:** `GET /selfService/resourcePack/{packId}` + +### `self_service_modify_resource_pack` + +Modify a user resource pack. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `packId` | number | **required** | The resource pack ID | + +**Endpoint:** `PUT /selfService/resourcePack/{packId}` + +### `self_service_delete_resource_pack` + +Delete a user resource pack. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `packId` | number | **required** | The resource pack ID | + +**Endpoint:** `DELETE /selfService/resourcePack/{packId}` + +### `self_service_get_hourly_stats` + +Retrieve hourly statistics for a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | +| `period` | string | optional | Comma-separated dates in YYYY-MM-DD format | +| `range` | string | optional | Date range filter | + +**Endpoint:** `GET /selfService/hourlyStats/byUserExtRelationId/{extRelationId}` + +### `self_service_set_hourly_resource_pack` + +Set an hourly resource pack for a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `packId` | number | **required** | The resource pack ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | + +**Endpoint:** `PUT /selfService/hourlyResourcePack/byUserExtRelationId/{extRelationId}` + +### `self_service_modify_access` + +Modify a user's self-service access settings. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | +| `selfService` | number | optional | Self-service level (0-3) | +| `selfServiceHourlyCredit` | boolean | optional | Enable hourly credit for self-service | + +**Endpoint:** `PUT /selfService/access/byUserExtRelationId/{extRelationId}` + +### `self_service_get_report` + +Generate a report for a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | + +**Endpoint:** `GET /selfService/report/byUserExtRelationId/{extRelationId}` + +### `self_service_get_usage` + +Retrieve usage data for a user. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `extRelationId` | string | **required** | External relation ID | +| `relStr` | boolean | optional | Treat extRelationId as a relation string | + +**Endpoint:** `GET /selfService/usage/byUserExtRelationId/{extRelationId}` + +### `self_service_delete_pack_servers` + +Delete all servers attached to a resource pack. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `packId` | number | **required** | The resource pack ID | + +**Endpoint:** `DELETE /selfService/resourcePackServers/{packId}` + +### `self_service_suspend_pack_servers` + +Suspend all servers assigned to a resource pack. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `packId` | number | **required** | The resource pack ID | + +**Endpoint:** `POST /selfService/resourcePackServers/{packId}/suspend` + +### `self_service_unsuspend_pack_servers` + +Unsuspend all servers assigned to a resource pack. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `packId` | number | **required** | The resource pack ID | + +**Endpoint:** `POST /selfService/resourcePackServers/{packId}/unsuspend` + +--- \ No newline at end of file