whm_server_info
Retrieve WHM server details including hostname, OS, cPanel version, load, and uptime for a specified account.
Instructions
Get WHM server information: hostname, OS, cPanel version, load, uptime
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | Account alias from accounts.json (use list_accounts to see options) |
Implementation Reference
- src/tools.py:66-72 (schema)Tool definition (schema) for whm_server_info: name, description, and input schema requiring an 'account' parameter.
name="whm_server_info", description="Get WHM server information: hostname, OS, cPanel version, load, uptime", inputSchema={ "type": "object", "properties": ACCOUNT_PARAM, "required": ["account"] } - src/tools.py:424-425 (handler)Handler for whm_server_info: calls the WHM API 'version' endpoint via _get helper, which returns hostname, OS, cPanel version, load, uptime.
case "whm_server_info": return await _get(client, url("version"), headers) - src/tools.py:34-40 (helper)The _get helper function used to execute the HTTP GET request to the WHM API.
async def _get(client: httpx.AsyncClient, url: str, headers: dict, params: dict = None) -> dict: try: r = await client.get(url, headers=headers, params=params or {}) r.raise_for_status() return r.json() except Exception as e: return {"error": str(e)} - src/tools.py:10-14 (helper)The _whm_url helper that constructs the WHM API URL for any function (here 'version').
def _whm_url(account: dict, function: str) -> str: host = account["host"] port = account.get("port", 2087) user = account.get("user", "root") return f"https://{host}:{port}/json-api/{function}?api.version=1" - src/server.py:47-75 (registration)The call_tool handler in server.py that routes tool calls to handle_whm_tool when the name starts with 'whm_'.
@app.call_tool() async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent]: log.info(f"Tool called: {name} | Args: {json.dumps(arguments)}") if name == "list_accounts": accounts = load_accounts() result = [ {"alias": a, "host": cfg["host"], "type": cfg.get("type","whm")} for a, cfg in accounts.items() ] return [TextContent(type="text", text=json.dumps(result, indent=2))] account_alias = arguments.get("account") if not account_alias: return [TextContent(type="text", text="ERROR: 'account' parameter is required. Use list_accounts to see available accounts.")] account = get_account(account_alias) if not account: return [TextContent(type="text", text=f"ERROR: Account '{account_alias}' not found. Use list_accounts to see configured accounts.")] async with httpx.AsyncClient(verify=False, timeout=30) as client: if name.startswith("whm_"): result = await handle_whm_tool(client, account, name, arguments) elif name.startswith("cpanel_"): result = await handle_cpanel_tool(client, account, name, arguments) else: result = {"error": f"Unknown tool: {name}"} return [TextContent(type="text", text=json.dumps(result, indent=2))]