Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOSTKEY_API_KEYYesYour Hostkey API key. Get one from InvAPI (https://invapi.hostkey.com) → API keys → create a key.
HOSTKEY_TOKEN_TTLNoOptional: token TTL setting (see .env.example).
HOSTKEY_HTTP_TIMEOUTNoOptional: HTTP timeout setting (see .env.example).
HOSTKEY_ALLOW_DESTRUCTIVENoOptional: set to '1' to allow OS reinstall, PXE, and service cancellation.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_serversA

List Hostkey account servers with filters. Before the first call, automatically refreshes inventory (eq/update_servers). Returns server IDs and brief data; use get_server for the full card.

get_serverA

Full server details by ID (eq/show): configuration, network, status, location.

get_power_statusB

Current server power status (on/off).

get_server_sensorsA

Hardware sensor readings (temperatures, voltages, fans). Bare-metal only.

get_server_tagsB

All server tags (tags/list). Tags store arbitrary key-value pairs.

search_servers_by_tagA

Search servers by tag name or value (tags/search_user). Returns server IDs.

list_presetsA

Current list of available instant servers (VM/BM/GPU/vGPU) with prices for a location. No token required. Use to pick a preset before ordering.

search_presetsB

Search free servers matching a preset name (e.g. vm.pico). Requires auth.

get_preset_pricingB

Prices for available presets in given currencies (presets/info). No token required.

list_preset_groupsB

Preset groups for catalog categories (presets/groups). No token required.

get_presetB

Details for one preset or all presets (presets/show). May require auth depending on permissions.

list_stock_serversA

Available stock servers (physical servers of standard configs; deploy within a business day). No token required.

get_stock_serverC

Details for a specific stock server (stocks/show).

list_osA

Operating systems available for a preset/server (os/list). Without instance_id returns OS for all presets. No token required.

list_softwareB

Software (marketplace apps) available for auto-install (software/list). No token required.

list_traffic_plansA

Available traffic plans for a preset in a location (traffic_plans/list). No token required.

get_account_infoA

Current API token and account info (auth/info): available calls, account type and role, linked server IDs. Useful to verify the connection.

logoutA

End the current API session (auth/logout): session token is removed from InvAPI. On the next call the client will sign in again with the API key.

list_api_keysB

List all account API keys (api_keys/list).

list_server_api_keysA

List API keys issued for a specific server (api_keys/list_for_server).

get_api_keyB

Details for a specific API key (api_keys/view).

get_api_key_historyB

API key usage history for a period (api_keys/history).

create_api_keyA

Create a new API key for the account or a specific server (api_keys/add). The key value is shown once in the response — save it.

update_api_keyB

Update API key settings (api_keys/edit): name, IP allowlist, notifications, active flag.

delete_api_keyA

Delete an API key (api_keys/delete). DESTRUCTIVE: apps using the key will lose access.

get_network_statusA

Server network interface status (net/get_status): port, switch, VLAN, speed, MAC, link status. Optional port limits the query to one interface (useful when another NIC has no upstream_id).

get_port_graphsB

Port utilization graphs for a period (net/show_cacti): day/month/year.

get_ip_infoC

Network interface information by IP address (ip/get_ip).

get_ptr_recordB

Current PTR record (reverse DNS) for an IP address (ip/get_ptr).

port_onC

Enable a server network port (net/port_on).

port_offA

Disable a server network port (net/port_off). DESTRUCTIVE: the server will lose network connectivity on this interface.

block_ipB

Block an IP address on the server at the Hostkey network level (net/block_ip). Useful for abuse requests.

unblock_ipC

Unblock an IP address on the server (net/unblock_ip).

update_ptr_recordB

Update the PTR record for an IP address (ip/update_ptr). Multiple records are passed separated by %0A.

set_main_ipB

Set the primary IP address of the server (ip/set_main) when there are multiple addresses.

list_dns_zonesA

List all DNS zones on the account on Hostkey PowerDNS servers (pdns/list_zones).

get_dns_zoneA

DNS zone contents: all records (A, AAAA, CNAME, MX, TXT, etc.) from the authoritative server (pdns/view_zone).

list_dns_domainsB

List all user domains from the domains table (pdns/list_domains).

list_dns_subdomainsC

List subdomains by server ID (pdns/list_subdomains).

add_dns_domainB

Create a DNS zone and add a domain to the domains table (pdns/add_domain). Requires pdns/edit permission.

delete_dns_domainA

Delete a domain by ID: DNS zone, the domain itself, and all its subdomains (pdns/delete_domain). DESTRUCTIVE. Requires pdns/edit permission.

add_dns_subdomainA

Add a subdomain to the subdomains table (pdns/add_subdomain). Requires pdns/edit permission.

edit_dns_subdomainB

Update a subdomain (pdns/edit_subdomain). Requires pdns/edit permission.

delete_dns_subdomainA

Delete a subdomain from the subdomains table (pdns/delete_subdomain). DESTRUCTIVE. Requires pdns/edit permission.

add_dns_zoneB

Create a DNS zone on the authoritative PowerDNS server (pdns/add_zone). Requires pdns/edit permission.

delete_dns_zoneA

Delete a DNS zone by name along with all records and metadata (pdns/delete_zone). DESTRUCTIVE. Requires pdns/edit permission.

add_dns_recordA

Add or update a DNS record in a zone (pdns/add_dns). Requires pdns/edit permission. For SRV records, fill in proto/priority/weight/port/target. Fields mname/rname are marked required for SOA checks in the docs — fill them in on error.

delete_dns_recordA

Delete a DNS record from a zone (pdns/delete_dns). DESTRUCTIVE. Requires pdns/edit permission.

get_snapshotsC

List virtual machine snapshots (vm/get_snapshot): name, snapshot_id, date.

get_vm_engineC

Virtualization engine information (vm/get_engine).

get_vm_statsC

Virtual machine statistics (vm/load_stats).

create_snapshotA

Create a virtual machine snapshot (vm/create_snapshot). Async operation. Track with check_task.

remove_snapshotA

Delete a snapshot (vm/remove_snapshot). DESTRUCTIVE: the snapshot is permanently deleted. Deletion is only possible on a powered-off VM.

restore_snapshotA

Restore a VM from a snapshot (vm/restore_snapshot). DESTRUCTIVE: the current VM disk state will be overwritten with the snapshot state.

get_vnc_consoleA

Access the server VNC console (eq/console): returns console.vv config in Base64 for virt-viewer.

start_novncB

Start a NoVNC (HTML5) server console session (eq/novnc): returns a link to open in the browser.

list_post_install_tasksA

Available post-install Ansible tasks (jenkins/get_tasks) with applicability tags: gpu, bm, vm, vgpu, default. Without a token — general list; with a token — tasks available to the specific user.

run_post_install_taskB

Run a Jenkins/Ansible task on a server (jenkins/call): task ID or name from list_post_install_tasks + extra params. E.g. installing GPU drivers after OS reinstall.

add_static_natA

Create a static DNAT to the server IPMI (nat/add_static_nat): public IP for classic IPMI access. Distinct from Secure IPMI Proxy in the panel — Proxy Active alone may not satisfy this call. Async; track with check_task. On server_ipmi_acl_required pass ip_acl.

remove_static_natC

Remove static DNAT to the server IPMI (nat/remove_static_nat).

clear_static_natB

Remove stale static NAT forwarding rules by internal IP (nat/clear_static_nat).

drop_natB

Delete a NAT record from the database (nat/drop_nat). DESTRUCTIVE, internal/ops action.

add_ipmi_userB

Create a temporary IPMI user for web access to IPMI (eq/add_ipmi_user).

remove_ipmi_userB

Remove a temporary IPMI user (eq/remove_ipmi_user).

reset_ipmiA

Reboot the server IPMI module (eq/unit_reset). Use when IPMI is unresponsive.

request_rh_power_onA

Remote Hands request: power on the server manually (jira/request_pon). Creates a Remote Hands ticket for the datacenter on-call shift; status and correspondence are in the ticket (link will be emailed).

request_rh_power_offA

Remote Hands request: power off the server manually (jira/request_poff). DESTRUCTIVE for running services. Creates a Remote Hands ticket for the datacenter on-call shift; status and correspondence are in the ticket (link will be emailed).

request_rh_rebootA

Remote Hands request: reboot the server manually (jira/request_reboot). Creates a Remote Hands ticket for the datacenter on-call shift; status and correspondence are in the ticket (link will be emailed).

request_rh_pxe_bootA

Remote Hands request: boot the server via PXE (jira/request_PXEboot). Needed when reinstalling OS on servers without a remote management module. Creates a Remote Hands ticket for the datacenter on-call shift; status and correspondence are in the ticket (link will be emailed).

request_rh_kvmA

Remote Hands request: attach IP KVM to the server (jira/request_kvm). Creates a Remote Hands ticket for the datacenter on-call shift; status and correspondence are in the ticket (link will be emailed).

request_rh_checkA

Remote Hands request: check the server and boot it into the OS (jira/request_check). Creates a Remote Hands ticket for the datacenter on-call shift; status and correspondence are in the ticket (link will be emailed).

request_sales_assistanceB

Ticket to the sales department (jira/request_assistance): cancellation or transfer of a service and similar requests. Describe details in message.

create_reinstall_taskA

PXE reinstall step 1: create an OS reinstall master key (eq/reinstall). Returns reinstall_key used by check_task to track install stages. DESTRUCTIVE: part of the process that wipes server disks.

create_pxe_configA

PXE reinstall step 2: create a PXE config for OS install (eq/create_pxe). DESTRUCTIVE.

set_boot_deviceA

Set server boot order (eq/boot_dev): pxe — network boot (reinstall step 3), disk — boot from disk (step 6), cd — mounted ISO.

clear_pxe_configA

PXE reinstall step 7: remove the PXE config (eq/clear_pxe). REQUIRED after completion — otherwise an unexpected reinstall may occur on the next reboot.

list_iso_imagesA

List available ISO images (iso/list_iso). InvAPI requires a server id (for client keys); images are matched to the server configuration.

get_uploaded_isosA

List ISO images uploaded by the client (iso/uploaded).

upload_isoB

Upload a new ISO image by URL (iso/upload). Available to clients.

add_iso_imageA

Add a new ISO image or update an existing one by name (iso/add). Requires special 'add' permission.

mount_isoA

Mount an ISO image on a server (iso/mount_iso). Async operation. Callback key returned — track with check_task. InvAPI expects iso (name or id). Pass iso, or name / iso_id aliases.

unmount_isoA

Unmount an ISO image from a server (iso/unmount_iso). Async operation. Callback key returned — track with check_task.

delete_iso_imageA

Delete an ISO image by ID (iso/delete). DESTRUCTIVE. Per docs, available only to Hostkey staff — clients will likely get a permission error.

s3_list_plansB

List available S3 storage plans (s3/list_plans).

s3_get_locationsB

List available locations for S3 (s3/get_available_locations).

s3_get_bucketsA

List S3 account buckets and usage (s3/get_buckets_rmq). Pass s3uid or account_id from s3_get_users. May return a task key — then track with check_task.

s3_get_buckets_via_queueA

Same as s3_get_buckets: list buckets via s3/get_buckets_rmq. Prefer s3_get_buckets.

s3_get_filesA

List files in a bucket with pagination and search (s3/get_files).

s3_get_usersA

List S3 users with service, traffic, and storage usage info (s3/get_users). Full filtering is available to administrators. Use returned s3uid/id with s3_get_buckets.

s3_show_keyA

Get a decrypted S3 access key (s3/show_key). SECRET: do not log or share with third parties.

s3_create_accountB

Create an S3 account: bind a plan and initial bucket (s3/create_account). Requires authentication.

s3_create_bucketB

Create a new bucket in an existing S3 account (s3/create_bucket).

s3_create_orderA

Create a paid S3 storage order linked to billing (s3/create_order). MONEY: creates a real order/invoice.

s3_delete_fileA

Delete a file from a bucket (s3/delete_file). DESTRUCTIVE: the file is permanently deleted.

s3_delete_bucketA

Delete a bucket from an S3 account (s3/delete_bucket). DESTRUCTIVE: all files in the bucket will be deleted.

s3_delete_accountA

Fully delete a user's S3 account (s3/delete_account). DESTRUCTIVE: all buckets and data will be deleted. Requires HOSTKEY_ALLOW_DESTRUCTIVE=1.

s3_delete_payment_accountA

Initiate S3 account deletion via service cancellation in billing (s3/delete_payment_account). DESTRUCTIVE: an end date will be set on the active service. Requires HOSTKEY_ALLOW_DESTRUCTIVE=1.

s3_cancel_account_deletionA

Cancel S3 service deletion initiated via billing and restore the account to active status (s3/cancel_payment_account_deletion).

s3_update_traffic_infoB

Update S3 account traffic information (s3/update_traffic_info). Available to administrators only.

list_rhr_requestsA

List Remote Hands requests with filtering by location and status (rhr/list).

create_rhr_requestA

Create a Remote Hands request (rhr/add): on-site datacenter shift work that cannot be done remotely. Describe the work in as much detail as possible in comment. Use only if the remote server management module is unavailable/not working.

add_rhr_commentB

Add a client-visible message to the request history (rhr/chat).

discard_rhr_requestB

Cancel/close a Remote Hands request (rhr/discard). DESTRUCTIVE: the request will be cancelled.

get_billing_clientB

Client data from billing (whmcs/get_client): contacts, currency, account status.

get_invoicesB

Full list of account invoices (whmcs/get_invoices).

get_invoiceC

Data for a specific invoice for payment (whmcs/get_invoice).

get_server_invoicesC

Invoices related to a specific server (whmcs/get_related_invoices).

get_server_billing_dataC

Billing information for a server rental (whmcs/get_billing_data).

get_transactionsB

List of transactions for the client account (whmcs/transactions).

get_credit_historyC

Credit balance movement: credit additions and deductions (whmcs/getcredits).

get_payment_gatewayC

Payment methods for a specific invoice (whmcs/getpaymentgw).

download_invoiceA

Download an invoice as PDF (whmcs/download_invoice). InvAPI returns binary PDF; MCP returns JSON with encoding=base64 and data — decode to a .pdf file.

get_cancellation_requestsB

List of active service cancellation requests (whmcs/get_cancellation_requests).

get_contactsB

List of additional account contacts (whmcs/get_contacts).

update_billing_clientB

Update client data in billing (whmcs/update_client): name, company, address, email, phone, etc.

reset_billing_passwordA

Reset the billing account password (whmcs/reset_password): a reset link is sent to the given email. Email must match the account email.

add_contactA

Add an additional contact to the account (whmcs/add_contact). WARNING: the contact is created with a random email — change it in Invapi.

update_contactB

Update an additional contact (whmcs/update_contact): email, password, phone. Providing a phone enables SMS 2FA.

delete_contactC

Delete an additional account contact (whmcs/delete_contact). DESTRUCTIVE.

generate_due_invoiceC

Create the next invoice for a server (whmcs/generate_due_invoice).

create_addfunds_invoiceB

Create an invoice to top up the credit balance (whmcs/create_addfunds). MONEY: creates a real invoice for the given amount.

apply_creditA

Pay an invoice in full or in part from the credit balance (whmcs/apply_credit). MONEY: deducts funds from the account.

mass_payC

Create a group invoice to pay multiple invoices at once (whmcs/mass_pay). MONEY.

request_cancellationA

Request service cancellation (whmcs/request_cancellation). DESTRUCTIVE: cancellation_type=1 — immediate cancel with partial refund (if possible), 0 — cancel at end of billing period. Requires HOSTKEY_ALLOW_DESTRUCTIVE=1.

delete_cancellation_requestC

Withdraw a service cancellation request (whmcs/delete_cancellation_request).

check_taskA

Check async job status by callback key (eq_callback/check). Many InvAPI operations (power on/off, order, reinstall, snapshots) return {"result":"OK","callback":""}. Pass that key here: result="Not ready" — still running; result="OK" — finished (key then expires). Server deploy can take 10–30 minutes. If the client sent progressToken, emits notifications/progress.

power_onA

Power on a server (eq/on). Async: response includes a callback key for check_task.

power_offA

Power off a server (eq/off). DESTRUCTIVE: interrupts all services on the server. Requires confirm=true. Async: response includes a callback key for check_task.

reboot_serverA

Reboot a server (eq/reboot). Interrupts services during reboot. Requires confirm=true. Async: response includes a callback key for check_task.

order_serverA

Order an instant or stock server (eq/order_instance). IMPORTANT: ordering charges the credit balance or creates an invoice. Defaults to dry_run=true — only checks preset/OS availability and returns a summary without placing an order. For a real order pass dry_run=false and confirm=true after explicit user consent on the cost. Deploy takes 10–30 minutes; status via check_task.

reinstall_serverA

Reinstall OS on an existing server (simplified path via eq/order_instance with id). DESTRUCTIVE: all disk data will be erased. Requires HOSTKEY_ALLOW_DESTRUCTIVE=1 in the server environment, confirm=true, and re-entering the server's current hostname. Async: status via check_task.

call_api_rawA

Universal direct InvAPI call by resource and action, for resources without typed tools (e.g.: iso — ISO image library, s3 — S3 Object Storage, rhr — Remote Hands new version; see action list in the docs: https://hostkey.com/documentation/apidocs/). ALWAYS requires confirm=true; destructive/paid actions additionally require HOSTKEY_ALLOW_DESTRUCTIVE=1. Prefer typed tools when they exist for the needed operation.

Prompts

Interactive templates invoked by user choice

NameDescription
order_server_promptGuided Hostkey server order: location → preset → OS → software → traffic plan → cost confirmation → order.
reinstall_server_promptGuided Hostkey OS reinstall with checks and progress tracking.
troubleshoot_server_promptDiagnose Hostkey server issues: power, sensors, network — with recommendations.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 132 tools

Disambiguation3/5

Most tools map to distinct resource/action pairs, but several areas overlap: s3_get_buckets and s3_get_buckets_via_queue are explicitly duplicative, preset listing/getting/searching is split across multiple tools, and Remote Hands power/reboot requests sit alongside direct power/reboot tools. call_api_raw also overlaps with nearly every typed tool, so misselection is plausible despite generally helpful descriptions.

Naming Consistency4/5

The set is predominantly snake_case with recognizable resource prefixes such as s3_, request_rh_, and dns. There are minor inconsistencies in verb choice (get vs list vs show) and some bare or abbreviated names like mass_pay, logout, and rhr, but the convention remains readable overall.

Tool Count1/5

132 tools is far beyond a manageable surface and exceeds the rubric's 50+ extreme-mismatch threshold. Even for a broad hosting platform, the presence of call_api_raw suggests the typed surface could have been kept much smaller.

Completeness4/5

Coverage is broad across server lifecycle, billing, DNS, S3, networking, IPMI, snapshots, ISO management, API keys, and Remote Hands. Some operations are permission-gated, staff-only, or only available through call_api_raw, but overall the domain has few dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues