Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HTB_PYTHONNoSet this if your Python 3.10+ interpreter is not on PATH; specifies the Python executable used to run the bundled toolkit.
HTB_API_KEYNoYour Hack The Box App Token. Optional if you instead create toolkit/.env.local inside the installed package. Create an App Token at https://app.hackthebox.com/profile/settings (App Tokens section).

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
}

Tools

Functions exposed to the LLM to take actions

NameDescription
htb_doctorA

Session health check: verifies API key resolution (and where the key came from), API connectivity (whoami), the currently active machine, and the VPN assignment in one call. Run this first in any session; exits with an error only when the key or API check fails. Needs HTB_API_KEY (env var or toolkit/.env.local).

htb_machine_listA

List Hack The Box machines. Default is the playable list (page 1); use filter for retired, todo, or unreleased lists, and spTier for Seasonal/starting-point tier lists. Returns compact JSON rows (id, name, os, difficulty, points, active, spawned, free). Lists are cached for 1h; noCache bypasses the cache.

htb_machine_searchA

Client-side search over the HTB machine lists, ranked by relevance. Matches id, name, OS, difficulty, tags, makers, points, IP. Use all to also scan retired machines. profiles additionally fetches every scanned machine's profile to match description text — powerful but SLOW (one API request per machine, can take minutes), use it only when list fields are not enough. Follow up with htb_machine_profile on a candidate.

htb_machine_profileA

Show a machine profile by id or name (e.g. 444 or 'BoardLight'). Returns an info block: id, name, os, difficulty, points, stars, retired, free, release, maker, user/system owns, tags. Set full=true for the complete raw API payload.

htb_machine_activeA

Show the currently active machine: id, name, ip, os, difficulty, expires_at/expires_in, lab server. Always live, never cached. An empty info block means nothing is running. details=true adds the synopsis and linked academy modules.

htb_machine_startA

Start (spawn) a machine by id or name. mode 'auto' (default) tries play then falls back to spawn. With wait=true (default) the CLI retries while spawn capacity is full, then waits for the IP — this can take several minutes at peak times; the response contains {id, name, ip, spawn}. Only one machine can be active at a time: a conflict error names the blocker, stop it (with the user's consent) and retry.

htb_machine_stopA

Stop (terminate) a machine; defaults to the currently active machine when target is omitted. This kills the running box and its state — confirm with the user before calling.

htb_machine_resetA

Reset a machine to a fresh state; defaults to the currently active machine when target is omitted. Wipes the box back to its initial state — confirm with the user before calling.

htb_machine_extendA

Extend a machine's expiry time; defaults to the currently active machine when target is omitted. Non-destructive: the running box and its state are untouched.

htb_machine_submitA

Submit a user or root flag for a machine (HTB infers which from the flag value). difficulty is a required rating in steps of 10 from 10 (piece of cake) to 100 (brainfuck) — ask the user if they did not provide one. Submissions are irreversible: confirm with the user first.

htb_challenge_listA

List Hack The Box challenges (active by default; retired=true for retired ones). Returns compact JSON rows (id, name, category, difficulty, points, retired, state, solved, solves). Cached for 1h; noCache bypasses the cache.

htb_challenge_searchA

Client-side search over the (cached) challenge lists, ranked by relevance. Matches id, name, category, difficulty, points, state. Use all to also scan retired challenges. Follow up with htb_challenge_info on a candidate.

htb_challenge_infoA

Show a challenge by id or name (names resolve case-insensitively). Returns an info block: id, name, category, difficulty, points, stars, retired, state, solved, release, description, solves, maker. Set full=true for the raw API payload.

htb_challenge_submitA

Submit a challenge flag. difficulty is a required rating in steps of 10 from 10 to 100 — ask the user if they did not provide one. Submissions are irreversible: confirm with the user first.

htb_vpn_serversA

List the VPN servers the account can use, live (includes VIP/VIP+/dedicated pools), assigned server first. Rows: id, name, group, location, clients, full, assigned. Default product pool is 'labs'. static=true shows only the built-in offline alias table and needs NO API key.

htb_vpn_statusA

Show the VPN server currently assigned to the account: id, name, location, product — or assigned=false when none.

htb_vpn_switchA

Switch the account to a different VPN server. Accepts a numeric id (289), a static alias (us-free-1, eu-sp-1, ...) or a live name from htb_vpn_servers (e.g. 'EU Machines VIP+ 1'). Affects the user's whole HTB connection — mention it before switching.

htb_vpn_downloadA

Download an OVPN config file for a server (id, alias, or live name). Default output is lab-vpn.ovpn in the toolkit directory; variant 0 = UDP. The toolkit does NOT run OpenVPN — the user connects themselves with the downloaded file.

htb_user_infoA

Show the user's HTB profile: id, name, rank, points, ranking, user/system owns, respects, country, team, vip. Set full=true for the raw profile payload.

htb_user_progressA

Show rank progression: current rank and points, next rank and its points requirement, current_rank_progress / rank_requirement (percent), rank_ownership, and own counts. Use this to answer 'how close am I to ranking up?'.

htb_user_activityA

Show recent owns (machine user/root flags and challenges), newest first. Rows: date, type (user/root/challenge), id, name, points, blood.

htb_rawA

Escape hatch: call any HTB API endpoint directly. Hits the v4 base (https://labs.hackthebox.com/api/v4) by default — pass baseUrl 'https://labs.hackthebox.com/api/v5' for v5 endpoints. path like '/machine/active' (leading slash optional); data takes a raw JSON string body. Set output to save a binary response (for example, GET /challenge/download/) instead of decoding it as text. Relative output paths resolve under the toolkit directory. Use when a typed tool is missing or an endpoint moved.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 22 tools

Disambiguation4/5

Most tools target a clearly distinct resource+action (machine_start vs machine_stop vs machine_reset vs machine_extend, vpn_servers vs vpn_status vs vpn_switch vs vpn_download). A few near-neighbors exist (machine_list vs machine_search, challenge_list vs challenge_search, machine_active vs machine_profile), but the descriptions explicitly differentiate scope and use cases, so an agent can reliably pick the right one.

Naming Consistency5/5

Every tool uses the same `htb_<resource>_<action>` snake_case pattern (htb_machine_start, htb_challenge_submit, htb_vpn_switch, htb_user_info). The two outliers (htb_doctor, htb_raw) still follow the consistent lowercase htb_ prefix and read as intentional singletons.

Tool Count4/5

22 tools is on the heavy side, but the server spans genuinely distinct sub-domains (machines, challenges, VPN, user profile, session health, raw escape hatch), and each tool covers a real operation. There is little obvious redundancy, so the count is justified by the broad surface rather than bloated.

Completeness5/5

The set covers the full lifecycle: machine list/search/profile/start/stop/reset/extend/submit, challenge list/search/info/submit, VPN list/status/switch/download, user info/progress/activity, plus a health check and htb_raw escape hatch for anything missing. No obvious dead ends for the HTB domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues